很久不在這里發帖子了,最近在家閑來無事,想到轉視頻的那東西又要做了,遂翻出以前的帖子,看到一年前豐哥讓我做一下文件上傳的進度條....額~~那就做一下吧。
東西很簡單,主要用到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來實時返回上傳狀態就可以了,限于篇幅我就不再貼代碼了,有興趣的讀者可以自己下載來看。
代碼下載(目標另存為就行了)

--------------------------
09博客園紀念T恤新聞:
網速調查報告:韓國互聯網網速全球居首網站導航:
博客園首頁 個人主頁 新聞 社區 博問 閃存 找找看文章來源:
http://www.cnblogs.com/xiaoao808/archive/2009/08/03/1537870.html
posted on 2009-08-03 19:46
破名超難起 閱讀(4898)
評論(7) 編輯 收藏