struts2文件上传进度条问题
有做过struts2文件上传进度条的大神么?
我按照网上的做法,为什么不能成功:
我编写一个类MyMultiPartRequest,实现 MultiPartRequest接口,并且把JakartaMultiPartRequest的代码全都拷贝过来,然后修改parseRequest方法。改后方法如下:
private List<FileItem> parseRequest(HttpServletRequest servletRequest, String saveDir) throws FileUploadException {
DiskFileItemFactory fac = createDiskFileItemFactory(saveDir);
ServletFileUpload upload = new ServletFileUpload(fac);
//添加监听器
upload.setProgressListener(new ProgressListener() {
@Override
public void update(long pBytesRead, long pContentLength, int pItems) {
int percent = (int) (((float)pBytesRead / (float)pContentLength) * 100);
ActionContext.getContext().getSession().put("process", percent + "%");//将进度百分比放到session中。
System.out.println("--------"+percent);//输出一下上传的进度
}
});
upload.setSizeMax(maxSize);
return upload.parseRequest(createRequestContext(servletRequest));
}
<!--ProgressListener -->
<bean type="org.apache.struts2.dispatcher.multipart.MultiPartRequest" name="requestParser"
class="com.gycenter.listener.MyMultiPartRequest" scope="default"/>
<constant name="struts.multipart.handler" value="requestParser" />
<!-- ProgressListener end -->
public void uploadProgress(){
try {
String process = (String) ActionContext.getContext().getSession().get("process");
System.out.println("文件已经上传"+process);
getResponse().getWriter().print(process);
} catch (IOException e) {
e.printStackTrace();
}
}