CommonController.java 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package com.ruoyi.project.common;
  2. import java.io.UnsupportedEncodingException;
  3. import java.net.URLEncoder;
  4. import javax.servlet.http.HttpServletRequest;
  5. import javax.servlet.http.HttpServletResponse;
  6. import org.slf4j.Logger;
  7. import org.slf4j.LoggerFactory;
  8. import org.springframework.stereotype.Controller;
  9. import org.springframework.web.bind.annotation.RequestMapping;
  10. import com.ruoyi.common.utils.file.FileUtils;
  11. import com.ruoyi.framework.config.RuoYiConfig;
  12. /**
  13. * 通用请求处理
  14. *
  15. * @author ruoyi
  16. */
  17. @Controller
  18. public class CommonController
  19. {
  20. private static final Logger log = LoggerFactory.getLogger(CommonController.class);
  21. @RequestMapping("common/download")
  22. public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request)
  23. {
  24. String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1);
  25. try
  26. {
  27. String filePath = RuoYiConfig.getDownloadPath() + fileName;
  28. response.setCharacterEncoding("utf-8");
  29. response.setContentType("multipart/form-data");
  30. response.setHeader("Content-Disposition", "attachment;fileName=" + setFileDownloadHeader(request, realFileName));
  31. FileUtils.writeBytes(filePath, response.getOutputStream());
  32. if (delete)
  33. {
  34. FileUtils.deleteFile(filePath);
  35. }
  36. }
  37. catch (Exception e)
  38. {
  39. log.error("下载文件失败", e);
  40. }
  41. }
  42. public String setFileDownloadHeader(HttpServletRequest request, String fileName) throws UnsupportedEncodingException
  43. {
  44. final String agent = request.getHeader("USER-AGENT");
  45. String filename = fileName;
  46. if (agent.contains("MSIE"))
  47. {
  48. // IE浏览器
  49. filename = URLEncoder.encode(filename, "utf-8");
  50. filename = filename.replace("+", " ");
  51. }
  52. else if (agent.contains("Firefox"))
  53. {
  54. // 火狐浏览器
  55. filename = new String(fileName.getBytes(), "ISO8859-1");
  56. }
  57. else if (agent.contains("Chrome"))
  58. {
  59. // google浏览器
  60. filename = URLEncoder.encode(filename, "utf-8");
  61. }
  62. else
  63. {
  64. // 其它浏览器
  65. filename = URLEncoder.encode(filename, "utf-8");
  66. }
  67. return filename;
  68. }
  69. }