|  | @@ -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);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 |