package com.ld.igds.basic.controller; import com.ld.igds.basic.manager.FileManager; import com.ld.igds.data.PageResponse; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.net.URLEncoder; /** * 文件上传接口 * * @author */ @Slf4j @RestController @RequestMapping("basic/file") public class FileController { @Autowired private FileManager fileManager; /** * 长传 出入库图片 * * @param file * @param request * @return * @throws IOException */ @RequestMapping("/update-file") public PageResponse updateAreationPos( @RequestParam(value = "file", required = true) MultipartFile file, HttpServletRequest request) throws IOException { String plateNum = request.getParameter("plateNum"); return fileManager.upLoadInoutImg(file, plateNum); } /** * 下载从临时目录下载,需要项目名称和当前组织 * * @param request * @return * @throws IOException */ @RequestMapping("/download-temp") public int downloadTemp( @RequestParam(value = "fileName", required = false) String fileName, @RequestParam(value = "companyId", required = false) String companyId, HttpServletRequest request, HttpServletResponse response) throws IOException { if (StringUtils.isEmpty(fileName) || StringUtils.isEmpty(companyId)) { response.sendError(404, "缺少下载参数条件,无法执行下载。"); return 404; } File file = fileManager.getTempFilePath(fileName, companyId); if (!file.exists()) { response.sendError(404, "没有获取到需要下载的文件,可能已被删除"); return 404; } response.setContentType("application/octet-stream"); response.setHeader("content-type", "application/octet-stream"); response.setHeader("Content-Length", String.valueOf(file.length())); response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(fileName, "utf8")); byte[] buffer = new byte[1024]; OutputStream os; try (FileInputStream fis = new FileInputStream(file); BufferedInputStream bis = new BufferedInputStream(fis)) { os = response.getOutputStream(); int i = bis.read(buffer); while (i != -1) { os.write(buffer); i = bis.read(buffer); } fis.close(); bis.close(); os.close(); os.flush(); } catch (Exception e) { response.sendError(500, "文件下载出错:" + e.getMessage()); log.error("------------文件下载失败--{}", e); return 500; } return 200; } }