/**
* 实现文件上传
* */
@RequestMapping("fileUpload")
@ResponseBody
public String fileUpload(@RequestParam("fileName") MultipartFile file){
if(file.isEmpty()){
return "false";
}
String fileName = file.getOriginalFilename();
int size = (int) file.getSize();
System.out.println(fileName + "-->" + size);
String path = "F:/test" ;
File dest = new File(path + "/" + fileName);
if(!dest.getParentFile().exists()){ //判断文件父目录是否存在
dest.getParentFile().mkdir();
}
try {
file.transferTo(dest); //保存文件
return "true";
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return "false";
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return "false";
}
}
/**
* 实现多文件上传
* */
@RequestMapping(value="multifileUpload",method= RequestMethod.POST)
@ApiOperation(value = "备注信息及图片上传",notes = "返回信息描述:success")
/**public @ResponseBody String multifileUpload(@RequestParam("fileName")List<MultipartFile> files) */
public @ResponseBody String multifileUpload(RemarkInfo remarkInfo, HttpServletRequest request){
System.out.println(System.currentTimeMillis());
System.out.println("remarkInfo = " + remarkInfo);
List<MultipartFile> files = ((MultipartHttpServletRequest)request).getFiles("fileName");
String remarka = request.getParameter("remarka");
String area = request.getParameter("area");
System.out.println("area = " + area);
System.out.println("remarka = " + remarka);
if(files.isEmpty()){
return "false";
}
String path = "D:/test" ;
String urls = "";
String rightnow = System.currentTimeMillis()+"";
for(MultipartFile file:files){
String fileName = file.getOriginalFilename();
int size = (int) file.getSize();
System.out.println(fileName + "-->" + size);
if(file.isEmpty()){
return "false";
}else{
String pos = path + File.separator + remarkInfo.getUserId() + File.separator + remarkInfo.getType() + File.separator + rightnow;
File posdir = new File(pos);
if(!posdir.exists()){ //判断文件父目录是否存在
posdir.mkdirs();
}
File dest = new File(pos + File.separator + fileName);
// if (urls != "") {
// urls += ",";
// }
try {
file.transferTo(dest);
}catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return "false";
}
}
}
urls += rightnow;
remarkInfo.setUrls(urls);
RemarkInfo insert = remarkInfoService.insert(remarkInfo);
System.out.println("insert = " + insert);
return "true";
}
压缩成zip下载
@RequestMapping(value="multifileDownload")
public @ResponseBody String zipFiles(RemarkInfo remarkInfo, HttpServletResponse response) {
// File[] srcfile, ,
// System.out.println("id = " + id);
String zipFileName = "pic";
byte[] buf = new byte[1024];
String path = "D:/test" ;
File dest = new File(path+File.separator+remarkInfo.getUserId()+File.separator+remarkInfo.getType()+File.separator+remarkInfo.getUrls());
File[] files = dest.listFiles();
File[] srcfile = files;
// 获取输出流
BufferedOutputStream bos = null;
try {
bos = new BufferedOutputStream(response.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
return "fail";
}
try {
response.reset(); // 重点突出
// 不同类型的文件对应不同的MIME类型
response.setContentType("application/x-msdownload");
response.setCharacterEncoding("utf-8");
response.setHeader("Content-disposition", "attachment;filename=" + zipFileName + ".zip");
// ZipOutputStream类:完成文件或文件夹的压缩
ZipOutputStream out = new ZipOutputStream(bos);
for (int i = 0; i < srcfile.length; i++) {
FileInputStream in = new FileInputStream(srcfile[i]);
// 给列表中的文件单独命名
out.putNextEntry(new ZipEntry(srcfile[i].getName()));
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
out.closeEntry();
in.close();
}
out.close();
bos.close();
System.out.println("压缩完成.");
} catch (Exception e) {
e.printStackTrace();
return "fail";
}
return "success";
}
//下载处理中文乱码问题
@RequestMapping(value = "/testDownload", method = RequestMethod.GET)
@ApiOperation(value = "下载文件所有")
public void testDownload(HttpServletResponse resp, @RequestParam String filePath, @RequestParam String fileType, @RequestParam String fileName, @RequestParam Integer size) throws IOException {
// File file = new File("C:/test.txt");
String fileNameEn = null;
resp.setCharacterEncoding("utf-8");
try {
fileNameEn = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
resp.setHeader("content-type", "application/octet-stream");
resp.setContentType("application/octet-stream");
resp.setContentLength(size);
resp.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileNameEn);
// resp.setHeader("Content-Disposition", "attachment;filename=" + fileNameEn);
byte[] buff = new byte[1024];
BufferedInputStream bis = null;
OutputStream os = null;
try {
os = resp.getOutputStream();
bis = new BufferedInputStream(HdfsUtil.download(filePath));
int i ;
while ((i=bis.read(buff))!=-1) {
os.write(buff, 0, i);
//i = bis.read(buff);
}
os.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}