diff --git a/src/main/java/org/ils/file/controller/FileDetailController.java b/src/main/java/org/ils/file/controller/FileDetailController.java index 4be36b2..7aa89c4 100644 --- a/src/main/java/org/ils/file/controller/FileDetailController.java +++ b/src/main/java/org/ils/file/controller/FileDetailController.java @@ -79,4 +79,22 @@ public class FileDetailController { ilsFileDetailService.downloadByUrl(url, response); } + /** + * 根据url和文件后缀上传文件 + */ + @ApiOperation("根据url和文件后缀上传文件") + @RequestMapping(value = "uploadByUrl", method = RequestMethod.POST) + public FileInfo uploadByUrl(String url, String contentType, HttpServletResponse response) throws IOException { + return ilsFileDetailService.uploadByUrl(url, contentType, response); + } + + /** + * 根据base64内容和文件后缀上传文件 + */ + @ApiOperation("根据url和文件后缀上传文件") + @RequestMapping(value = "uploadByBase64", method = RequestMethod.POST) + public FileInfo uploadByBase64(String base64, String contentType, HttpServletResponse response) throws IOException { + return ilsFileDetailService.uploadByBase64(base64, contentType, response); + } + } diff --git a/src/main/java/org/ils/file/service/IlsFileDetailService.java b/src/main/java/org/ils/file/service/IlsFileDetailService.java index e58716d..96a9ce4 100644 --- a/src/main/java/org/ils/file/service/IlsFileDetailService.java +++ b/src/main/java/org/ils/file/service/IlsFileDetailService.java @@ -4,6 +4,7 @@ import cn.xuyanwu.spring.file.storage.FileInfo; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; +import java.io.FileNotFoundException; import java.io.IOException; /** @@ -37,4 +38,21 @@ public interface IlsFileDetailService { * @param url */ public void downloadByUrl(String url, HttpServletResponse response) throws IOException; + + + /** + * 根据url文件流和文件后缀上传文件 + * @param url + * @param contentType + */ + public FileInfo uploadByUrl(String url, String contentType, HttpServletResponse response) throws FileNotFoundException; + + + /** + * 根据base64内容和文件后缀上传文件 + * @param base64 + * @param contentType + */ + public FileInfo uploadByBase64(String base64, String contentType, HttpServletResponse response) throws FileNotFoundException; + } diff --git a/src/main/java/org/ils/file/service/impl/IlsFileDetailServiceImpl.java b/src/main/java/org/ils/file/service/impl/IlsFileDetailServiceImpl.java index 267f324..f3c4c9a 100644 --- a/src/main/java/org/ils/file/service/impl/IlsFileDetailServiceImpl.java +++ b/src/main/java/org/ils/file/service/impl/IlsFileDetailServiceImpl.java @@ -1,5 +1,6 @@ package org.ils.file.service.impl; +import cn.hutool.core.io.FileUtil; import cn.xuyanwu.spring.file.storage.Downloader; import cn.xuyanwu.spring.file.storage.FileInfo; import cn.xuyanwu.spring.file.storage.FileStorageService; @@ -11,10 +12,8 @@ import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; -import java.io.BufferedOutputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.OutputStream; +import java.io.*; +import java.util.Base64; /** @@ -25,6 +24,8 @@ import java.io.OutputStream; @Slf4j @Service public class IlsFileDetailServiceImpl implements IlsFileDetailService { + + private static final String SPLIT_STR = "."; @Autowired private FileStorageService fileStorageService; @@ -86,4 +87,16 @@ public class IlsFileDetailServiceImpl implements IlsFileDetailService { toClient.close(); } + @Override + public FileInfo uploadByUrl(String url, String contentType, HttpServletResponse response) throws FileNotFoundException { + FileInfo fileInfo = fileStorageService.of(url).setOriginalFilename(System.currentTimeMillis() + SPLIT_STR + contentType).upload(); + return fileInfo; + } + + @Override + public FileInfo uploadByBase64(String base64, String contentType, HttpServletResponse response) throws FileNotFoundException { + FileInfo fileInfo = fileStorageService.of(Base64.getDecoder().decode(base64)).setOriginalFilename(System.currentTimeMillis() + SPLIT_STR + contentType).upload(); + return fileInfo; + } + }