很久不在這里發(fā)帖子了,最近在家閑來(lái)無(wú)事,想到轉(zhuǎn)視頻的那東西又要做了,遂翻出以前的帖子,看到一年前豐哥讓我做一下文件上傳的進(jìn)度條....額~~那就做一下吧。
東西很簡(jiǎn)單,主要用到commons-fileupload,其中有一個(gè)progressListener的接口,該接口可以實(shí)現(xiàn)實(shí)時(shí)更新已上傳文件的大小,有了這個(gè)還說(shuō)什么呢?
給出代碼

代碼
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 到目前為止讀取文件的比特?cái)?shù)
* pContentLength 文件總大小
* pItems 目前正在讀取第幾個(gè)文件
* 只要在session中實(shí)時(shí)保存文件上傳的狀態(tài)(這里我用fileUploadStatus類(lèi)來(lái)封裝)
*/
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添加進(jìn)去

代碼
myProgressListener getBarListener = new myProgressListener(req);
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setProgressListener(getBarListener);
最后就是通過(guò)js來(lái)不斷的訪問(wèn)另一個(gè)servlet來(lái)實(shí)時(shí)返回上傳狀態(tài)就可以了,限于篇幅我就不再貼代碼了,有興趣的讀者可以自己下載來(lái)看。
代碼下載(目標(biāo)另存為就行了)

--------------------------
09博客園紀(jì)念T恤新聞:
網(wǎng)速調(diào)查報(bào)告:韓國(guó)互聯(lián)網(wǎng)網(wǎng)速全球居首網(wǎng)站導(dǎo)航:
博客園首頁(yè) 個(gè)人主頁(yè) 新聞 社區(qū) 博問(wèn) 閃存 找找看文章來(lái)源:
http://www.cnblogs.com/xiaoao808/archive/2009/08/03/1537870.html
posted on 2009-08-03 19:46
破名超難起 閱讀(4898)
評(píng)論(7) 編輯 收藏