81,090
社区成员
发帖
与我相关
我的任务
分享
boolean flag = true;
//struts2 请求 包装过滤器
MultiPartRequestWrapper wrapper = (MultiPartRequestWrapper)request;
//从请求包装获取文件域的名字
Enumeration fileParameterNames = wrapper.getFileParameterNames();
//当文件域名字不为null,且含有多个参数的时候进入循环
while(fileParameterNames != null && fileParameterNames.hasMoreElements() && flag){
//得到下一个文件域的name属性值
String inputName = (String) fileParameterNames.nextElement();
//得到这个请求中的mime文件类型数组
String[] contentType = wrapper.getContentTypes(inputName);
if(contentType != null && contentType.length != 0){
String[] fileNames = wrapper.getFileNames(inputName);
if(fileNames != null && fileNames.length != 0){
File[]files = wrapper.getFiles(inputName);
for(int i=0;i<files.length;i++){
String fileName=fileNames[i];
//文件扩展名
String fileExt = fileName.substring(fileName.lastIndexOf(".")+1).toLowerCase();
File file = files[i];
//检查文件大小
if(file.length() > maxSize){
out.println(getError("上传文件大小超过限制。"));
return;
}
//检查扩展名
if(!Arrays.<String>asList(extMap.get(dirName).split(",")).contains(fileExt)){
out.println(getError("上传文件扩展名是不允许的扩展名。\n只允许" + extMap.get(dirName) + "格式。"));
return;
}
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
String newFileName = df.format(new Date()) + "_" + new Random().nextInt(1000) + "." + fileExt;
try{
File uploadedFile = new File(savePath, newFileName);
if(!uploadedFile.isFile()){
uploadedFile.createNewFile();
}
byte[] buffer = new byte[1024];
FileOutputStream fos = new FileOutputStream(uploadedFile);
InputStream in = new FileInputStream(file);
int num = 0;
while((num = in.read(buffer))>0){
fos.write(buffer, 0, num);
}
in.close();
fos.close();
}catch(Exception e){
out.println(getError("上传文件失败。"));
return;
}
JSONObject obj = new JSONObject();
obj.put("error", 0);
obj.put("url", saveUrl + newFileName);
out.println(obj.toJSONString());
flag = false;
}
}
}
}