CommonController.java 3.9 KB
Newer Older
RuoYi's avatar
RuoYi committed
1
package com.ruoyi.web.controller.common;
RuoYi's avatar
RuoYi committed
2

RuoYi's avatar
RuoYi committed
3 4 5 6
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
RuoYi's avatar
RuoYi committed
7
import org.springframework.beans.factory.annotation.Autowired;
RuoYi's avatar
RuoYi committed
8
import org.springframework.web.bind.annotation.GetMapping;
RuoYi's avatar
RuoYi committed
9 10 11
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
RuoYi's avatar
RuoYi committed
12
import com.ruoyi.common.config.RuoYiConfig;
RuoYi's avatar
RuoYi committed
13
import com.ruoyi.common.constant.Constants;
RuoYi's avatar
RuoYi committed
14
import com.ruoyi.common.core.domain.AjaxResult;
RuoYi's avatar
RuoYi committed
15
import com.ruoyi.common.utils.StringUtils;
RuoYi's avatar
RuoYi committed
16
import com.ruoyi.common.utils.file.FileUploadUtils;
RuoYi's avatar
RuoYi committed
17
import com.ruoyi.common.utils.file.FileUtils;
RuoYi's avatar
RuoYi committed
18 19 20 21 22 23 24 25 26 27
import com.ruoyi.framework.config.ServerConfig;

/**
 * 通用请求处理
 * 
 * @author ruoyi
 */
@RestController
public class CommonController
{
RuoYi's avatar
RuoYi committed
28 29
    private static final Logger log = LoggerFactory.getLogger(CommonController.class);

RuoYi's avatar
RuoYi committed
30 31 32
    @Autowired
    private ServerConfig serverConfig;

RuoYi's avatar
RuoYi committed
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
    /**
     * 通用下载请求
     * 
     * @param fileName 文件名称
     * @param delete 是否删除
     */
    @GetMapping("common/download")
    public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request)
    {
        try
        {
            if (!FileUtils.isValidFilename(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));
            FileUtils.writeBytes(filePath, response.getOutputStream());
            if (delete)
            {
                FileUtils.deleteFile(filePath);
            }
        }
        catch (Exception e)
        {
            log.error("下载文件失败", e);
        }
    }

RuoYi's avatar
RuoYi committed
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
    /**
     * 通用上传请求
     */
    @PostMapping("/common/upload")
    public AjaxResult uploadFile(MultipartFile file) throws Exception
    {
        try
        {
            // 上传文件路径
            String filePath = RuoYiConfig.getUploadPath();
            // 上传并返回新文件名称
            String fileName = FileUploadUtils.upload(filePath, file);
            String url = serverConfig.getUrl() + fileName;
            AjaxResult ajax = AjaxResult.success();
            ajax.put("fileName", fileName);
            ajax.put("url", url);
            return ajax;
        }
        catch (Exception e)
        {
            return AjaxResult.error(e.getMessage());
        }
    }
RuoYi's avatar
RuoYi committed
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108

    /**
     * 本地资源通用下载
     */
    @GetMapping("/common/download/resource")
    public void resourceDownload(String name, 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());
    }
RuoYi's avatar
RuoYi committed
109
}