67,512
社区成员
发帖
与我相关
我的任务
分享
ServletFileUpload upload = new ServletFileUpload(factory);
//写入进度条
upload.setProgressListener(new ProgressListener() {
@Override
public void update(long pBytesRead, long pContentLength, int pItems) {
ProcessInfo pri = new ProcessInfo();
pri.setItemNum(pItems);
pri.setReadSize(pBytesRead);
pri.setTotalSize(pContentLength);
pri.setBewrite( pBytesRead+"/"+pContentLength+" byte");
pri.setRatio( Math.round(new Float(pBytesRead) / new Float(pContentLength)*100));
System.out.println("----------------进度:"+Math.round(new Float(pBytesRead) / new Float(pContentLength)*100));
hs.setAttribute(TEMPLET_FILE_PROCESS_SESSION, pri);
}
});
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
log.debug("-------------do post-------------------");
// 创建解析工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setRepository(new File(System.getProperty("java.io.tmpdir")));// 设置文件缓存目录
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
UploadListener listener = new UploadListener();
upload.setProgressListener(listener);
try {
List<FileItem> list = upload.parseRequest(request);//通过此调用,commons.fileupload会感知文件进度,同时调用监听器UploadListener
log.debug("size is " + list.size());
for (FileItem item : list) {
//TODO more
}
} catch (FileUploadException e) {
log.error(e.getMessage(), e);
response.getWriter().println("上传发生错误:" + e.getMessage());
}
}
class UploadListener implements ProgressListener{
private static final Log log = LogFactory.getLog(ProgressListener.class);
/**
* @param bytesRead 已读取数据长度
* @param contentLength 文件总长度
* @param items 正在保存第几个文件
*/
@Override
public void update(long bytesRead, long contentLength, int items) {
System.out.println(items + ":" + bytesRead + "/" + contentLength);
log.debug(items + ":" + bytesRead + "/" + contentLength);
}
}