package com.web.controller.api;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Iterator;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.base.exception.AppException;
import com.entity.bean.BaseBean;
import com.web.BaseController;
@Controller
public class UploadController extends BaseController {
private static Logger logger = Logger.getLogger(UploadController.class);
/**
* 文件上传
*
* @return
*/
@SuppressWarnings({ "finally" })
@ResponseBody
@RequestMapping(value = "upload.do",method=RequestMethod.POST)
public String upload(HttpServletRequest request) {
BaseBean bean = new BaseBean();
try {
CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(
request.getSession().getServletContext());
if (!commonsMultipartResolver.isMultipart(request)) {
throw new AppException("当前请求没有包含任何附件");
}
MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request;
Iterator<String> it = multipartHttpServletRequest.getFileNames();
String name = null;//接受附件的名字
MultipartFile file = null;
String dist = "e:/upload";//保存目录
String fileName = null;//文件最终保存的名字
String originalFilename = null;//文件的原始名字
int files = 0;//统计文件个数
while (it.hasNext()) {
name = it.next();
file = multipartHttpServletRequest.getFile(name);
originalFilename = file.getOriginalFilename();
if(originalFilename == null) {
continue;
}
fileName = this.getUUIDFileName(originalFilename);
if(fileName == null) {
continue;
}
FileCopyUtils.copy(file.getInputStream(), new FileOutputStream(dist + File.separator + fileName));
files++;
}
if(files == 0) {
throw new AppException("当前请求没有包含任何附件");
}
} catch (AppException ex) {
logger.error("文件上传出错:" + ex.getMessage(), ex);
bean.setMessage(ex.getMessage());
bean.setCode("0");
} catch (Exception ex) {
logger.error("文件上传出错", ex);
bean.setMessage("未知错误");
bean.setCode("-1");
} finally {
return JSON.toJSONString(bean, SerializerFeature.WriteMapNullValue,
SerializerFeature.WriteNullStringAsEmpty);
}
}
// 生成随机文件名
private String getUUIDFileName(String originName) {
int index = originName.lastIndexOf(".");
if(index >0) {
String fileName = UUID.randomUUID().toString().replaceAll("-", "");
String suffix = originName.substring(index, originName.length());
return fileName + suffix;
}
return null;
}
}
package com.web.controller.api;
import java.io