| 
					
				 | 
			
			
				@@ -5,6 +5,7 @@ import javax.servlet.http.HttpServletResponse; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.slf4j.Logger;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.slf4j.LoggerFactory;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.annotation.Autowired;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.http.MediaType;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.web.bind.annotation.GetMapping;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.web.bind.annotation.PostMapping;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.web.bind.annotation.RestController;
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -41,17 +42,15 @@ public class CommonController 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         try
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (!FileUtils.isValidFilename(fileName))
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!FileUtils.checkAllowDownload(fileName))
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", fileName));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             String filePath = RuoYiConfig.getDownloadPath() + fileName;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            response.setCharacterEncoding("utf-8");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            response.setContentType("multipart/form-data");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            response.setHeader("Content-Disposition",
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    "attachment;fileName=" + FileUtils.setFileDownloadHeader(request, realFileName));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            FileUtils.setAttachmentResponseHeader(response, realFileName);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             FileUtils.writeBytes(filePath, response.getOutputStream());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (delete)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             {
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -92,18 +91,28 @@ public class CommonController 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 本地资源通用下载
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @GetMapping("/common/download/resource")
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void resourceDownload(String name, HttpServletRequest request, HttpServletResponse response) throws Exception
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throws Exception
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 本地资源路径
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String localPath = RuoYiConfig.getProfile();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 数据库资源地址
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String downloadPath = localPath + StringUtils.substringAfter(name, Constants.RESOURCE_PREFIX);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 下载名称
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String downloadName = StringUtils.substringAfterLast(downloadPath, "/");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        response.setCharacterEncoding("utf-8");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        response.setContentType("multipart/form-data");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        response.setHeader("Content-Disposition",
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                "attachment;fileName=" + FileUtils.setFileDownloadHeader(request, downloadName));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        FileUtils.writeBytes(downloadPath, response.getOutputStream());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!FileUtils.checkAllowDownload(resource))
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                throw new Exception(StringUtils.format("资源文件({})非法,不允许下载。 ", resource));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 本地资源路径
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String localPath = RuoYiConfig.getProfile();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 数据库资源地址
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String downloadPath = localPath + StringUtils.substringAfter(resource, Constants.RESOURCE_PREFIX);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 下载名称
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String downloadName = StringUtils.substringAfterLast(downloadPath, "/");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            FileUtils.setAttachmentResponseHeader(response, downloadName);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            FileUtils.writeBytes(downloadPath, response.getOutputStream());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        catch (Exception e)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            log.error("下载文件失败", e);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }
 
			 |