本文執行個體講述了Java上傳檔案進度條的實現方法。分享給大家供大家參考,具體如下:
東西很簡單,主要用到commons-fileupload,其中有一個progressListener的介面,該介面可以實現即時更新已上傳檔案的大小,有了這個還說什麼呢?
這裡給出代碼:
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添加進去
myProgressListener getBarListener = new myProgressListener(req);ServletFileUpload upload = new ServletFileUpload(factory);upload.setProgressListener(getBarListener);
最後就是通過js來不斷的訪問另一個servlet來即時返回上傳狀態就可以了,限於篇幅我就不再貼代碼了,有興趣的讀者可以自己下載來看。
完整執行個體代碼點擊此處本站下載。
希望本文所述對大家Java程式設計有所協助。