您的位置:首页 > Web前端 > BootStrap

使用bootstrap-fileinput的问题:上传时upload.parseRequest(request)得到的List为空

2017-03-23 20:40 465 查看
最近在做一个项目时,使用bootstrap-fileinput上传文件时遇到一个问题:

DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
String uploadPath = basePath + "/upload";//设置下载目录
String tempPath = uploadPath +"/temp";//设置临时目录
File temp = new File(tempPath);
if(!temp.exists()){
temp.mkdirs();
}
factory.setRepository(temp);//设置临时缓冲目录
List<FileItem> list = upload.parseRequest(ServletActionContext.getRequest()); //解析request请求

for (FileItem fileItem : list) {
if (fileItem.isFormField()) {
if (fileItem.getFieldName().equals("resourceCategory")){
resourceCategory = fileItem.getString();
}
}else{
if(fileItem.getName()!=null && !"".equals(fileItem.getName())){
fileItemName = fileItem.getName();
size = fileItem.getSize();
file= new File(realPath);
if(!file.exists()){
file.mkdirs();
}
File dest = new File(file+"/"+fileItemName);
InputStream ins = fileItem.getInputStream();
OutputStream ous = new FileOutputStream(dest);
try {
byte[] buffer = new byte[1024];
int len = 0;
while ((len = ins.read(buffer)) > -1)
ous.write(buffer, 0, len);
}finally {
ous.close();
ins.close();
}
}
}
}出现list为空或者[],使用的框架是s2sh,访问形式是.action,在网上找了好长时间,都说解决不了,要换,但是研究了之后,终于解决了,具体解决办法如下:
1.新建MyRequestParser类,重写parse方法,里面内容为空

public class MyMultiPartRequest extends JakartaMultiPartRequest{

@Override
public void parse(HttpServletRequest servletRequest, String arg1) throws IOException {

}

}2、最后在struts2的配置文件下增加下面内容
<bean type="org.apache.struts2.dispatcher.multipart.MultiPartRequest"
name="myMultiPartRequest" class="com.MyMultiPartRequest"
scope="default" optional="true"/>
<constant name="struts.multipart.handler" value="myMultiPartRequest" />

配置完成后list就不为空了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐