package com.boman.file.controller; import com.boman.domain.dto.AjaxResult; import com.boman.domain.dto.FileDto; import org.apache.commons.lang3.BooleanUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import com.boman.domain.dto.R; import com.boman.common.core.utils.file.FileUtils; import com.boman.file.service.ISysFileService; import com.boman.domain.SysFile; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.net.URL; import java.util.List; /** * 文件请求处理 * * @author ruoyi */ @RestController public class SysFileController { private static final Logger log = LoggerFactory.getLogger(SysFileController.class); @Autowired private ISysFileService sysFileService; /** * 文件上传请求 */ @PostMapping("upload") public R upload(MultipartFile file) { try { // 上传并返回访问地址 List urlList = sysFileService.uploadFile(file); SysFile sysFile = new SysFile(); String staticPath = urlList.get(0); String absolutePath = urlList.get(1); sysFile.setName(FileUtils.getName(staticPath)); sysFile.setUrl(staticPath); sysFile.setAbsolutePath(absolutePath); return R.ok(sysFile); } catch (Exception e) { log.error("上传文件失败", e); return R.fail(e.getMessage()); } } /** * 通用上传请求 */ @PostMapping("/upload/base64") public AjaxResult uploadFileBase64(@RequestBody String base64) { try { List urlList = sysFileService.uploadFileBase64(base64); String staticPath = urlList.get(0); String absolutePath = urlList.get(1); AjaxResult ajax = AjaxResult.success(); ajax.put("name", FileUtils.getName(staticPath)); ajax.put("url", staticPath); ajax.put("absolutePath", absolutePath); return ajax; } catch (Exception e) { return AjaxResult.error(e.getMessage()); } } /** * 通用上传请求 */ @PostMapping("/previewAndDownload") public void previewAndDownload(@RequestBody FileDto dto, HttpServletResponse response) throws RuntimeException, IOException { sysFileService.previewAndDownload(dto, response); } }