|
|
|
@ -10,7 +10,11 @@ import cn.hutool.core.io.FileTypeUtil;
|
|
|
|
|
import cn.hutool.core.io.FileUtil;
|
|
|
|
|
import cn.hutool.core.io.IoUtil;
|
|
|
|
|
import cn.hutool.core.io.unit.DataSizeUtil;
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
|
import org.springframework.core.env.Environment;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
@ -19,6 +23,8 @@ import java.io.BufferedOutputStream;
|
|
|
|
|
import java.io.File;
|
|
|
|
|
import java.io.IOException;
|
|
|
|
|
import java.io.InputStream;
|
|
|
|
|
import java.net.InetAddress;
|
|
|
|
|
import java.net.UnknownHostException;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Optional;
|
|
|
|
|
|
|
|
|
@ -32,6 +38,7 @@ import java.util.Optional;
|
|
|
|
|
*/
|
|
|
|
|
@Service
|
|
|
|
|
@Validated
|
|
|
|
|
@Slf4j
|
|
|
|
|
public class FileServiceImpl implements IFileService {
|
|
|
|
|
|
|
|
|
|
@Value("${nxhs.upload.basePath}")
|
|
|
|
@ -48,6 +55,9 @@ public class FileServiceImpl implements IFileService {
|
|
|
|
|
@Value("${nxhs.upload.image.maxSize}")
|
|
|
|
|
private String imageMaxSize;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private Environment environment;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public FileUploadRespVO uploadFile(FileUploadReqVO uploadReqVO) {
|
|
|
|
|
return upload(uploadReqVO.getFile(), FileStyleEnum.DOC);
|
|
|
|
@ -75,7 +85,7 @@ public class FileServiceImpl implements IFileService {
|
|
|
|
|
private FileUploadRespVO upload(MultipartFile file, FileStyleEnum fileStyleEnum) {
|
|
|
|
|
// 获取文件源名称
|
|
|
|
|
String originalName = file.getOriginalFilename();
|
|
|
|
|
try (InputStream inputStream = file.getInputStream()){
|
|
|
|
|
try (InputStream inputStream = file.getInputStream()) {
|
|
|
|
|
// 获取文件二进制内容
|
|
|
|
|
byte[] content = IoUtil.readBytes(inputStream, false);
|
|
|
|
|
// 文件类型、大小校验
|
|
|
|
@ -100,18 +110,31 @@ public class FileServiceImpl implements IFileService {
|
|
|
|
|
// 判断文件是否存在,如果存在直接返回 todo
|
|
|
|
|
// path = Optional.ofNullable(path).orElse(basePath) + File.separator;
|
|
|
|
|
// 确定上传路径
|
|
|
|
|
String URI = File.separator + fileStyleEnum.toString().toLowerCase() + File.separator + fileName;
|
|
|
|
|
String fullPath = basePath + URI;
|
|
|
|
|
String URI = basePath + fileStyleEnum.toString().toLowerCase() + "/" + fileName;
|
|
|
|
|
String fullPath = System.getProperty("user.dir") + URI;
|
|
|
|
|
// 上传到文件存储位置
|
|
|
|
|
FileUtil.writeBytes(content, fullPath);
|
|
|
|
|
FileUploadRespVO uploadRespVO = new FileUploadRespVO();
|
|
|
|
|
uploadRespVO.setName(originalName);
|
|
|
|
|
uploadRespVO.setField(fileName);
|
|
|
|
|
uploadRespVO.setUrl(URI);
|
|
|
|
|
uploadRespVO.setUrl(getUrl(URI));
|
|
|
|
|
return uploadRespVO;
|
|
|
|
|
// 入库操作 todo
|
|
|
|
|
} catch (IOException exception) {
|
|
|
|
|
throw new BizIllegalException("上传失败");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 拼接为完整的静态访问地址
|
|
|
|
|
private String getUrl(String Uri) {
|
|
|
|
|
String port = environment.getProperty("server.port");
|
|
|
|
|
String ip = "localhost";
|
|
|
|
|
try {
|
|
|
|
|
ip = InetAddress.getLocalHost().getHostAddress();
|
|
|
|
|
} catch (UnknownHostException e) {
|
|
|
|
|
log.info("获取服务IP失败", e);
|
|
|
|
|
}
|
|
|
|
|
return StrUtil.format("http://{}:{}{}", ip, port, Uri);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|