UploadController.java 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package com.jeff.tianti.controller;
  2. import java.io.File;
  3. import java.io.PrintWriter;
  4. import java.util.Map;
  5. import java.util.UUID;
  6. import javax.servlet.http.HttpServletRequest;
  7. import org.apache.commons.lang3.StringUtils;
  8. import org.springframework.stereotype.Controller;
  9. import org.springframework.web.bind.annotation.RequestMapping;
  10. import org.springframework.web.bind.annotation.ResponseBody;
  11. import org.springframework.web.multipart.MultipartFile;
  12. import org.springframework.web.multipart.MultipartHttpServletRequest;
  13. import com.jeff.tianti.common.dto.AjaxResult;
  14. /**
  15. * 文件异步上传Controller
  16. * @author JeffXu
  17. * @since 2016-03-14
  18. */
  19. @Controller
  20. @RequestMapping("/upload")
  21. public class UploadController {
  22. public final static String ATTACH_SAVE_PATH = "attach";
  23. @RequestMapping("/uploadAttach")
  24. public void uploadAttach(HttpServletRequest request, PrintWriter out) {
  25. MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
  26. Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
  27. MultipartFile multipartFile = null;
  28. String fileName = null;
  29. for (Map.Entry<String, MultipartFile> set : fileMap.entrySet()) {
  30. multipartFile = set.getValue();// 文件名
  31. }
  32. fileName = this.storeIOc(multipartRequest, multipartFile);
  33. out.print(fileName);
  34. }
  35. @RequestMapping("/ajax/upload_file")
  36. @ResponseBody
  37. public AjaxResult ajaxUploadFile(HttpServletRequest request) {
  38. MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
  39. AjaxResult ajaxResult = new AjaxResult();
  40. ajaxResult.setSuccess(false);
  41. try {
  42. Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
  43. MultipartFile multipartFile = null;
  44. String fileName = null;
  45. for (Map.Entry<String, MultipartFile> set : fileMap.entrySet()) {
  46. multipartFile = set.getValue();// 文件名
  47. }
  48. fileName = this.storeIOc(multipartRequest, multipartFile);
  49. ajaxResult.setData(fileName);
  50. ajaxResult.setSuccess(true);
  51. } catch (Exception e) {
  52. e.printStackTrace();
  53. }
  54. return ajaxResult;
  55. }
  56. // 接受图片,返回文件地址
  57. private String storeIOc(HttpServletRequest request, MultipartFile file) {
  58. String result = "";
  59. String realPath = request.getSession().getServletContext().getRealPath("uploads");
  60. if (file == null) {
  61. return null;
  62. }
  63. String fileName = "";
  64. String logImageName = "";
  65. if (file.isEmpty()) {
  66. result = "文件未上传";
  67. } else {
  68. String _fileName = file.getOriginalFilename();
  69. String suffix = _fileName.substring(_fileName.lastIndexOf("."));
  70. if(StringUtils.isNotBlank(suffix)){
  71. if(suffix.equalsIgnoreCase(".xls") || suffix.equalsIgnoreCase(".xlsx") || suffix.equalsIgnoreCase(".txt")|| suffix.equalsIgnoreCase(".png")
  72. || suffix.equalsIgnoreCase(".doc") || suffix.equalsIgnoreCase(".docx") || suffix.equalsIgnoreCase(".pdf")
  73. || suffix.equalsIgnoreCase(".ppt") || suffix.equalsIgnoreCase(".pptx")|| suffix.equalsIgnoreCase(".gif")
  74. || suffix.equalsIgnoreCase(".jpg")|| suffix.equalsIgnoreCase(".jpeg")|| suffix.equalsIgnoreCase(".bmp")){
  75. // /**使用UUID生成文件名称**/
  76. logImageName = UUID.randomUUID().toString() + suffix;
  77. fileName = realPath + File.separator + ATTACH_SAVE_PATH + File.separator + logImageName;
  78. File restore = new File(fileName);
  79. try {
  80. file.transferTo(restore);
  81. result = "/uploads/attach/" + logImageName;
  82. } catch (Exception e) {
  83. throw new RuntimeException(e);
  84. }
  85. }else{
  86. result = "文件格式不对,只能上传ppt、ptx、doc、docx、xls、xlsx、pdf、png、jpg、jpeg、gif、bmp格式";
  87. }
  88. }
  89. }
  90. return result;
  91. }
  92. }