package com.fzzy.eoms.file.controller;
|
|
import com.fzzy.eoms.file.CoreFileService;
|
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.common.utils.file.FileUtils;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.http.MediaType;
|
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import javax.annotation.Resource;
|
import javax.servlet.ServletOutputStream;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.File;
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.net.URLEncoder;
|
import java.util.Date;
|
|
/**
|
* @program: eoms
|
* @description: 文件操作
|
* @author: 0range
|
* @create: 2021-01-05 17:05
|
**/
|
@Slf4j
|
@RestController
|
@RequestMapping("/file")
|
public class FileController {
|
|
|
@Resource
|
private CoreFileService fileService;
|
|
/**
|
* 附件下载
|
* @param fileId
|
* @param fileDate
|
* @return
|
* @throws Exception
|
*/
|
@GetMapping("/download")
|
public void download(@RequestParam(value = "id", required = true) String fileId,
|
@RequestParam(value = "date", required = true) String fileDate,
|
HttpServletResponse response) throws Exception {
|
|
log.info("-----download-----fileId={},fileDate={}", fileId, fileDate);
|
|
// 将字符串转换为 long
|
long timestamp = Long.parseLong(fileDate);
|
Date date = new Date(timestamp);
|
|
String storePath = fileService.getStoragePath(date);
|
|
String filePath = storePath + fileId;
|
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
|
FileUtils.setAttachmentResponseHeader(response, fileId);
|
FileUtils.writeBytes(filePath, response.getOutputStream());
|
}
|
|
/**
|
* 附件预览,仅图片和PDF类支持预览
|
* @param fileId
|
* @param fileDate
|
* @return
|
* @throws Exception
|
*/
|
@GetMapping("/preview")
|
public void preview(@RequestParam(value = "id", required = true) String fileId,
|
@RequestParam(value = "date", required = true) String fileDate,
|
HttpServletResponse response){
|
|
log.info("-----preview-----fileId={},fileDate={}", fileId, fileDate);
|
|
// 将字符串转换为 long
|
long timestamp = Long.parseLong(fileDate);
|
Date date = new Date(timestamp);
|
|
String storePath = fileService.getStoragePath(date);
|
|
String filePath = storePath + fileId;
|
|
File file = new File(filePath);
|
response.setHeader("Content-Disposition", "inline; filename*=UTF-8''" + fileId);
|
ServletOutputStream os = null;
|
try {
|
os = response.getOutputStream();
|
os.write(org.apache.commons.io.FileUtils.readFileToByteArray(file));
|
os.flush();
|
} catch (Exception e) {
|
log.error("-----preview-----fileId={},fileDate={},error={}", fileId, fileDate, e.getMessage());
|
log.error("preview error ",e);
|
} finally {
|
if (os != null) {
|
try {
|
os.close();
|
} catch (Exception e) {
|
log.error("-----preview-----fileId={},fileDate={},error={}", fileId, fileDate, e.getMessage());
|
log.error("preview error ",e);
|
}
|
}
|
}
|
}
|
|
|
|
}
|