當前位置:首頁 » 文件傳輸 » 大文件上傳進度條
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

大文件上傳進度條

發布時間: 2023-06-19 14:24:57

A. 怎麼實現文件批量上傳 顯示進度條而且上傳後不跳轉頁面 推薦幾個上傳插件

用JSP可以批量上傳,要想帶進度條,單單JSP似乎難以做到,但可借用一些JS插件,如:ExtJS。

ExtJS裡面有進度條功能,將JSP與ExtJS內部的數據結合起來,應該可以實現,不過這種我沒做過。

在我所見中,163郵箱里有這種的功能,可以參考一下。

B. 文件上傳時,進度條的設計原理是什麼

以java為例:一般來說,上傳也好,下載也好,都要用到JavaI/O。 而計算進度的原理,不就是已經傳輸的大小與總大小的比值嘛。 這樣就簡單了,就拿最基本的OutputStream來說,它的基本的寫出方法為 void write(byte[] b) ,實際上寫出的過程不就是通過InputStream循環讀,然後OutputStream循環寫嘛。 你只要事先通過File類取得文件的總大小,然後在讀入或寫出的循環里加一個簡單的進度計算的步驟,每讀取或寫出一次,就將已傳輸大小增加b.length,求出比值,更新進度條。具體的計算間隔,可以根據循環次數或時間間隔來定。 編碼上,估計要用到I/O流,File,Socket以及Thread。 因為你是使用fileupload插件,所以最好查看一下它的實現代碼,已決定如何將進度功能加入其中。

C. php 文件上傳,如何實現進度條功能

用flash文件上傳插件
如:http://ke..com/view/1332553.html?wtp=tt
php創始者也寫了一個php的擴展可以實現,麻煩,不如flash上傳插件簡單,qq,的相冊都用flash傳

D. java多文件上傳顯示進度條

使用 apache fileupload ,spring MVC jquery1.6x , bootstrap 實現一個帶進度條的多文件上傳,由於fileupload 的局限,暫不能實現每個上傳文件都顯示進度條,只能實現一個總的進度條,效果如圖:

packagecom.controller;

importjava.util.List;

importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjavax.servlet.http.HttpSession;

importorg.apache.commons.fileupload.FileItemFactory;
importorg.apache.commons.fileupload.ProgressListener;
importorg.apache.commons.fileupload.disk.DiskFileItemFactory;
importorg.apache.commons.fileupload.servlet.ServletFileUpload;
importorg.apache.log4j.Logger;
importorg.springframework.stereotype.Controller;
importorg.springframework.web.bind.annotation.RequestMapping;
importorg.springframework.web.bind.annotation.RequestMethod;
importorg.springframework.web.bind.annotation.ResponseBody;
importorg.springframework.web.servlet.ModelAndView;

@Controller
{
Loggerlog=Logger.getLogger(FileUploadController.class);

/**
*upload上傳文件
*@paramrequest
*@paramresponse
*@return
*@throwsException
*/
@RequestMapping(value="/upload.html",method=RequestMethod.POST)
publicModelAndViewupload(HttpServletRequestrequest,
HttpServletResponseresponse)throwsException{
finalHttpSessionhs=request.getSession();
ModelAndViewmv=newModelAndView();
booleanisMultipart=ServletFileUpload.isMultipartContent(request);
if(!isMultipart){
returnmv;
}
//Createafactoryfordisk-basedfileitems
FileItemFactoryfactory=newDiskFileItemFactory();

//Createanewfileuploadhandler
ServletFileUploapload=newServletFileUpload(factory);
upload.setProgressListener(newProgressListener(){
publicvoipdate(longpBytesRead,longpContentLength,intpItems){
ProcessInfopri=newProcessInfo();
pri.itemNum=pItems;
pri.readSize=pBytesRead;
pri.totalSize=pContentLength;
pri.show=pBytesRead+"/"+pContentLength+"byte";
pri.rate=Math.round(newFloat(pBytesRead)/newFloat(pContentLength)*100);
hs.setAttribute("proInfo",pri);
}
});
Listitems=upload.parseRequest(request);
//Parsetherequest
//Processtheuploadeditems
//Iteratoriter=items.iterator();
//while(iter.hasNext()){
//FileItemitem=(FileItem)iter.next();
//if(item.isFormField()){
//Stringname=item.getFieldName();
//Stringvalue=item.getString();
//System.out.println("thisiscommonfeild!"+name+"="+value);
//}else{
//System.out.println("thisisfilefeild!");
//StringfieldName=item.getFieldName();
//StringfileName=item.getName();
//StringcontentType=item.getContentType();
//booleanisInMemory=item.isInMemory();
//longsizeInBytes=item.getSize();
//FileuploadedFile=newFile("c://"+fileName);
//item.write(uploadedFile);
//}
//}
returnmv;
}


/**
*process獲取進度
*@paramrequest
*@paramresponse
*@return
*@throwsException
*/
@RequestMapping(value="/process.json",method=RequestMethod.GET)
@ResponseBody
publicObjectprocess(HttpServletRequestrequest,
HttpServletResponseresponse)throwsException{
return(ProcessInfo)request.getSession().getAttribute("proInfo");
}

classProcessInfo{
publiclongtotalSize=1;
publiclongreadSize=0;
publicStringshow="";
publicintitemNum=0;
publicintrate=0;
}

}

E. 前端上傳文件實時顯示進度條和上傳速度的工作原理是怎樣的

後端的責任。