上传代码
This commit is contained in:
@@ -0,0 +1,182 @@
|
||||
package com.nis.web.controller.restful;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import com.nis.domain.restful.ConfigFile;
|
||||
import com.nis.restful.RestServiceException;
|
||||
import com.nis.util.Constants;
|
||||
import com.nis.util.MD5Utils;
|
||||
import com.nis.util.StringUtil;
|
||||
import com.nis.web.controller.BaseRestController;
|
||||
import com.nis.web.service.SaveRequestLogThread;
|
||||
import com.nis.web.service.ServicesRequestLogService;
|
||||
import com.wordnik.swagger.annotations.Api;
|
||||
import com.wordnik.swagger.annotations.ApiOperation;
|
||||
import com.wordnik.swagger.annotations.ApiParam;
|
||||
|
||||
import net.sf.json.JSONArray;
|
||||
import net.sf.json.JSONObject;
|
||||
|
||||
/**
|
||||
* @ClassName: ConfigFileController
|
||||
* @Description: 配置文件上传
|
||||
* @author (DDM)
|
||||
* @date 2016年9月19日 下午6:09:33
|
||||
* @version V1.0
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("${servicePath}/file/v1")
|
||||
@Api(value = "ConfigFileController", description = "配置文件上传")
|
||||
public class ConfigFileController extends BaseRestController {
|
||||
Logger logger = LoggerFactory.getLogger(ConfigSourcesController.class);
|
||||
SimpleDateFormat ymdhms=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
@Autowired
|
||||
ServicesRequestLogService servicesRequestLogService;
|
||||
@RequestMapping(value = "/fileUploadSources", method = RequestMethod.POST)
|
||||
@ApiOperation(value = "文件上传", httpMethod = "POST", response = Map.class, notes = "多文件上传")
|
||||
@ApiParam(value = "文件上传", name = "filesUpload", required = true)
|
||||
public Map fileUploadSources(ConfigFile configFile,HttpServletRequest request,
|
||||
HttpServletResponse response){
|
||||
long start=System.currentTimeMillis();
|
||||
System.out.println("operator:"+configFile.getOperator()+
|
||||
"version:"+configFile.getVersion()+
|
||||
"opAction:"+configFile.getOpAction()+
|
||||
"opTime:"+configFile.getOpTime()
|
||||
);
|
||||
JSONArray fileArray=new JSONArray();
|
||||
SaveRequestLogThread thread=super.saveRequestLog(servicesRequestLogService,Constants.OPACTION_DELETE,request, configFile,fileArray);
|
||||
String serviceDir=request.getRealPath("upload");
|
||||
try {
|
||||
MultipartFile[] files=configFile.getFiles();
|
||||
if(files != null && files.length > 0){
|
||||
for (MultipartFile file : files) {
|
||||
//记录上传过程起始时的时间,用来计算上传时间
|
||||
int pre = (int) System.currentTimeMillis();
|
||||
//取得上传文件
|
||||
if(file != null){
|
||||
//取得当前上传文件的文件名称
|
||||
String myFileName = file.getOriginalFilename();
|
||||
if(!"".equals(myFileName.trim())){
|
||||
JSONObject fileObject=new JSONObject();
|
||||
myFileName=myFileName.trim();
|
||||
//定义上传路径
|
||||
File serviceFile = new File(serviceDir,myFileName);
|
||||
//上传的文件已经存在,如果需要另存,请取消注释
|
||||
// if(serviceFile.exists()){
|
||||
// myFileName=myFileName.substring(0, myFileName.lastIndexOf(".")-1)+"_new"+
|
||||
// myFileName.substring(myFileName.lastIndexOf("."), myFileName.length());
|
||||
// serviceFile=new File(serviceDir,myFileName);
|
||||
// }
|
||||
file.transferTo(serviceFile);
|
||||
|
||||
fileObject.put("fileName", myFileName);
|
||||
fileObject.put("fileNameMd5", MD5Utils.getMD5Checksum(serviceDir+"/"+myFileName));
|
||||
fileObject.put("uploadTime", ymdhms.format(new Date()));
|
||||
fileArray.add(fileObject);
|
||||
}
|
||||
}
|
||||
//记录上传该文件后的时间
|
||||
int finaltime = (int) System.currentTimeMillis();
|
||||
System.out.println(finaltime - pre);
|
||||
}
|
||||
}
|
||||
// thread.setContent(fileArray);
|
||||
} catch (Exception e) {
|
||||
thread.setExceptionInfo(e.getMessage()+" "+e.getCause());
|
||||
logger.error(e.toString());
|
||||
throw new RestServiceException(thread,System.currentTimeMillis()-start,"文件上传失败");
|
||||
}
|
||||
return serviceResponse(thread,System.currentTimeMillis()-start,request, response, "文件上传成功",fileArray);
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/fileDownLoadSources", method = RequestMethod.GET)
|
||||
@ApiOperation(value = "文件下载", httpMethod = "GET", response = Map.class, notes = "文件下载")
|
||||
@ApiParam(value = "文件下载", name = "fileDownLoad", required = true)
|
||||
public Map fileDownLoadSources(String fileName,
|
||||
HttpServletRequest request,
|
||||
HttpServletResponse response){
|
||||
long start=System.currentTimeMillis();
|
||||
JSONObject fileObject=new JSONObject();
|
||||
SaveRequestLogThread thread=super.saveRequestLog(servicesRequestLogService,Constants.OPACTION_DELETE,request, fileObject);
|
||||
BufferedInputStream bis = null;
|
||||
BufferedOutputStream bos = null;
|
||||
String downLoadPath=null;
|
||||
if(!StringUtil.isBlank(fileName)){
|
||||
}else{
|
||||
throw new RestServiceException(thread,System.currentTimeMillis()-start,"文件名称为空");
|
||||
}
|
||||
try {
|
||||
fileName=fileName.trim();
|
||||
response.setContentType("text/html;charset=utf-8");
|
||||
request.setCharacterEncoding("UTF-8");
|
||||
|
||||
String ctxPath = request.getRealPath("upload");
|
||||
downLoadPath = ctxPath +"/"+ fileName;
|
||||
long fileLength = new File(downLoadPath).length();
|
||||
|
||||
response.setContentType("application/x-msdownload;");
|
||||
response.setHeader("Content-disposition", "attachment; filename="
|
||||
+ new String(fileName.getBytes("utf-8"), "ISO8859-1"));
|
||||
response.setHeader("Content-Length", String.valueOf(fileLength));
|
||||
|
||||
bis = new BufferedInputStream(new FileInputStream(downLoadPath));
|
||||
bos = new BufferedOutputStream(response.getOutputStream());
|
||||
|
||||
byte[] buff = new byte[2048];
|
||||
int bytesRead;
|
||||
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
|
||||
bos.write(buff, 0, bytesRead);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
thread.setExceptionInfo(e.getMessage()+" "+e.getCause());
|
||||
logger.error(e.toString());
|
||||
throw new RestServiceException(thread,System.currentTimeMillis()-start,"文件下载失败");
|
||||
} finally {
|
||||
try {
|
||||
if (bis != null)
|
||||
bis.close();
|
||||
if (bos != null)
|
||||
bos.close();
|
||||
} catch (Exception e2) {
|
||||
thread.setExceptionInfo(e2.getMessage()+" "+e2.getCause());
|
||||
logger.error(e2.toString());
|
||||
throw new RestServiceException(thread,System.currentTimeMillis()-start,"文件下载失败");
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
fileObject.put("fileName", downLoadPath);
|
||||
fileObject.put("fileNameMd5", MD5Utils.getMD5Checksum(downLoadPath));
|
||||
fileObject.put("downloadTime", ymdhms.format(new Date()));
|
||||
} catch (NoSuchAlgorithmException e) {
|
||||
thread.setExceptionInfo(e.getMessage()+" "+e.getCause());
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
thread.setExceptionInfo(e.getMessage()+" "+e.getCause());
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return serviceResponse(thread,System.currentTimeMillis()-start,request, response, "文件下载",fileName);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user