packagecom.ebways.web.upload.controller;import java.io.*;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.HashMap;importjava.util.Map;importcom.ebways.web.base.BaseController;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestParam;importorg.springframework.web.bind.annotation.ResponseBody;importcom.ebways.web.upload.url.UploadURL;importorg.springframework.web.multipart.MultipartFile;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;
@Controller
@RequestMapping(value=UploadURL.MODE_NAME)public class UploadController extendsBaseController {
@RequestMapping(value=UploadURL.IMAGE_UPLOAD)
@ResponseBodypublic String uploadFile(MultipartFile file, HttpServletRequest request, HttpServletResponse response) throwsIllegalArgumentException, Exception {//参数列表
Map map = new HashMap<>();
map.put("file", file);
savePic(file.getInputStream(), file.getOriginalFilename());//请求接口
String apiReturnStr = "";//apiHttpRequest(map, API_HOST_URL + "/image/upload");
returnapiReturnStr;
}private voidsavePic(InputStream inputStream, String fileName) {
OutputStream os= null;try{
String path= "D:\\testFile\\";//2、保存到临时文件//1K的数据缓冲
byte[] bs = new byte[1024];//读取到的数据长度
intlen;//输出的文件流保存到本地文件
File tempFile= newFile(path);if (!tempFile.exists()) {
tempFile.mkdirs();
}
os= new FileOutputStream(tempFile.getPath() + File.separator +fileName);//开始读取
while ((len = inputStream.read(bs)) != -1) {
os.write(bs,0, len);
}
}catch(IOException e) {
e.printStackTrace();
}catch(Exception e) {
e.printStackTrace();
}finally{//完毕,关闭所有链接
try{
os.close();
inputStream.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}/***
* 功能:公共Action
*
*
* @date 2016年9月8日
*@authorwangsheng*/
private String allowSuffix = "jpg,png,gif,jpeg";//允许文件格式
private long allowSize = 2L;//允许文件大小
privateString fileName;privateString[] fileNames;publicString getAllowSuffix() {returnallowSuffix;
}public voidsetAllowSuffix(String allowSuffix) {this.allowSuffix =allowSuffix;
}public longgetAllowSize() {return allowSize * 1024 * 1024;
}public void setAllowSize(longallowSize) {this.allowSize =allowSize;
}publicString getFileName() {returnfileName;
}public voidsetFileName(String fileName) {this.fileName =fileName;
}publicString[] getFileNames() {returnfileNames;
}public voidsetFileNames(String[] fileNames) {this.fileNames =fileNames;
}/***
* 功能:重新命名文件
*
*
*@return*@authorwangsheng
* @date 2016年9月8日*/
privateString getFileNameNew() {
SimpleDateFormat fmt= new SimpleDateFormat("yyyyMMddHHmmssSSS");return fmt.format(newDate());
}/***
* 功能:文件上传
*
*
*@paramfiles
*@paramdestDir
*@throwsException
*@authorwangsheng
* @date 2014年9月25日*/
public void uploads(MultipartFile[] files, String destDir, HttpServletRequest request) throwsException {
String path=request.getContextPath();
String basePath= request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() +path;try{
fileNames= newString[files.length];int index = 0;for(MultipartFile file : files) {
String suffix= file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);int length =getAllowSuffix().indexOf(suffix);if (length == -1) {throw new Exception("请上传允许格式的文件");
}if (file.getSize() >getAllowSize()) {throw new Exception("您上传的文件大小已经超出范围");
}
String realPath= request.getSession().getServletContext().getRealPath("/");
File destFile= new File(realPath +destDir);if (!destFile.exists()) {
destFile.mkdirs();
}
String fileNameNew= getFileNameNew() + "." + suffix;// File f = new File(destFile.getAbsoluteFile() + "\\" +fileNameNew);
file.transferTo(f);
f.createNewFile();
fileNames[index++] = basePath + destDir +fileNameNew;
}
}catch(Exception e) {throwe;
}
}/***
* 功能:文件上传
*
*
*@paramfile
*@paramdestDir
*@throwsException
*@authorwangsheng
* @date 2016年9月8日*/
public void upload(MultipartFile file, String destDir, HttpServletRequest request) throwsException {
String path=request.getContextPath();
String basePath= request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() +path;try{
String suffix= file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);int length =getAllowSuffix().indexOf(suffix);if (length == -1) {throw new Exception("请上传允许格式的文件");
}if (file.getSize() >getAllowSize()) {throw new Exception("您上传的文件大小已经超出范围");
}
String realPath= request.getSession().getServletContext().getRealPath("/");
File destFile= new File(realPath +destDir);if (!destFile.exists()) {
destFile.mkdirs();
}
String fileNameNew= getFileNameNew() + "." +suffix;
File f= new File(destFile.getAbsoluteFile() + "/" +fileNameNew);
file.transferTo(f);
f.createNewFile();
fileName= basePath + destDir +fileNameNew;
}catch(Exception e) {throwe;
}
}
}