本文實例講述了Java上傳文件進度條的實現方法。分享給大家供大家參考,具體如下:
東西很簡單,主要用到commons-fileupload,其中有一個progressListener的接口,該接口可以實現實時更新已上傳文件的大小,有了這個還說什么呢?
這里給出代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
package lc.progress; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import lc.progress.vo.fileUploadStatus; import org.apache.commons.fileupload.ProgressListener; public class myProgressListener implements ProgressListener { private HttpSession session; public myProgressListener(HttpServletRequest req) { session=req.getSession(); fileUploadStatus status = new fileUploadStatus(); session.setAttribute( "status" , status); } /* pBytesRead 到目前為止讀取文件的比特數 * pContentLength 文件總大小 * pItems 目前正在讀取第幾個文件 * 只要在session中實時保存文件上傳的狀態(這里我用fileUploadStatus類來封裝) */ public void update( long pBytesRead, long pContentLength, int pItems) { // TODO Auto-generated method stub fileUploadStatus status = (fileUploadStatus) session.getAttribute( "status" ); status.setPBytesRead(pBytesRead); status.setPContentLength(pContentLength); status.setPItems(pItems); } } |
然后在上傳得servlet或action中加入這樣一段代碼,就可以把自定義的progressListener添加進去
1
2
3
|
myProgressListener getBarListener = new myProgressListener(req); ServletFileUpload upload = new ServletFileUpload(factory); upload.setProgressListener(getBarListener); |
最后就是通過js來不斷的訪問另一個servlet來實時返回上傳狀態就可以了,限于篇幅我就不再貼代碼了,有興趣的讀者可以自己下載來看。
完整實例代碼點擊此處本站下載。
希望本文所述對大家Java程序設計有所幫助。