帶進度條的檔案上傳(java+ajax,附源碼)【原創】

來源:互聯網
上載者:User
  拜讀ahxu兄關於上傳檔案顯示進度的文章,理解了其原理,由於ahxu兄那個不開源,所以為了以後擴充,只好自己寫了,否則我是不會重新發明輪子的。
  首先,去apache的官網下了個最新的commons-fileupload-1.1.1.jar及其源碼,看了一下,發現與原來的版本有些出入,仔細看了看commons-fileupload-1.1.1的原始碼,理解了其整個過程,在inputStream那做下手腳,就可以取到進度了,這裡,要感謝ahxu兄的貢獻。
  ok,開始進入正題,新版本中,用的是ServletFileUpload,看了下源碼,寫一個與其相似的類,只是重寫了parseRequest方法,以及附加一些從ahxu兄那摳出來的方法。
  在寫代碼的時候,還要用到關於servlet的包servlet-api.jar。
  寫完後調試的過程中,老報錯:java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream,後來一查才知道少了commons-io-1.2.jar,加上後,就ok了。
  關於擷取及顯示進度部分,用了我原來自己寫的一個ajax的應用架構,從中抽取了部分代碼出來,注意,js檔案只適用於UTF-8編碼的頁面,因為現在我唯寫UTF-8編碼的頁面了,國際化方便。
  下面給個出來
  
  下面給出源碼:
  處理檔案上傳的
  使用的例子
  progressUpload.jar中,包含了commons-fileupload-1.1.1.jar,servlet-api.jar,commons-io-1.2.jar,在progressUpload.jar中,還包含一個屬性檔案,裡面是一些預設配置,可根據自己的需要修改。
  由於有源碼,怎麼用可以自己看源碼,此外,那個例子中也寫了,在此不再贅述。例子中只取到了FileItem,再將item儲存一下就ok了,範例程式碼:

File upFile = new File(remoteFilePath);
                try
                {
                    item.write(upFile);
                    fileInfo.put("infotip", "上傳成功.");
                }
                catch (java.lang.Exception e)
                {
                    fileInfo.put("infotip", "上傳失敗.");
                }

  有什麼新的想法,歡迎大家留言給我,一起把這個東東做好,發展,才是硬道理。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.