package com.ruoyi.service.impl; import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.file.FileUtils; import com.ruoyi.service.DownLoadFileService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.MediaType; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import java.io.*; /** * @Version 1.0 * @Author Jin_quan Ou * @Date 2023-03-19 17:33 */ @Service @Slf4j public class DownLoadFileServiceImpl implements DownLoadFileService { @Override public void downLoadFile(String path, HttpServletResponse response) { path = path.substring(8); try { if (!FileUtils.checkAllowDownload(path)) { throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", path)); } String realFileName = System.currentTimeMillis() + path.substring(path.indexOf("_") + 1); String filePath = RuoYiConfig.getProfile() + path; response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); FileUtils.setAttachmentResponseHeader(response, realFileName); FileUtils.writeBytes(filePath, response.getOutputStream()); } catch (Exception e) { log.error("下载文件失败", e); } } }