mirror of
https://github.com/dataease/dataease.git
synced 2025-02-25 12:03:05 +08:00
Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
60dc1ab014
@ -16,7 +16,7 @@ import java.util.Map;
|
|||||||
* Description:
|
* Description:
|
||||||
*/
|
*/
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/static/resource")
|
@RequestMapping("/staticResource")
|
||||||
public class StaticResourceController {
|
public class StaticResourceController {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
|
@ -3,6 +3,7 @@ package io.dataease.service.staticResource;
|
|||||||
import cn.hutool.core.codec.Base64Decoder;
|
import cn.hutool.core.codec.Base64Decoder;
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
|
import io.dataease.commons.exception.DEException;
|
||||||
import io.dataease.commons.utils.FileUtils;
|
import io.dataease.commons.utils.FileUtils;
|
||||||
import io.dataease.commons.utils.LogUtil;
|
import io.dataease.commons.utils.LogUtil;
|
||||||
import io.dataease.commons.utils.StaticResourceUtils;
|
import io.dataease.commons.utils.StaticResourceUtils;
|
||||||
@ -14,7 +15,10 @@ import org.springframework.util.Assert;
|
|||||||
import org.springframework.util.FileCopyUtils;
|
import org.springframework.util.FileCopyUtils;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import javax.imageio.ImageIO;
|
||||||
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
@ -31,61 +35,78 @@ public class StaticResourceService {
|
|||||||
|
|
||||||
private final Path staticDir = Paths.get("/opt/dataease/data/static-resource/");
|
private final Path staticDir = Paths.get("/opt/dataease/data/static-resource/");
|
||||||
|
|
||||||
public void upload(String fileId,MultipartFile file) {
|
public void upload(String fileId, MultipartFile file) {
|
||||||
// check if the path is valid (not outside staticDir)
|
// check if the path is valid (not outside staticDir)
|
||||||
Assert.notNull(file, "Multipart file must not be null");
|
Assert.notNull(file, "Multipart file must not be null");
|
||||||
try {
|
try {
|
||||||
|
if (!isImage(file)) {
|
||||||
|
DEException.throwException("Multipart file must be image");
|
||||||
|
}
|
||||||
String originName = file.getOriginalFilename();
|
String originName = file.getOriginalFilename();
|
||||||
String newFileName = fileId+originName.substring(originName.lastIndexOf("."),originName.length());
|
String newFileName = fileId + originName.substring(originName.lastIndexOf("."), originName.length());
|
||||||
Path uploadPath = Paths.get(staticDir.toString(), newFileName);
|
Path uploadPath = Paths.get(staticDir.toString(), newFileName);
|
||||||
// create dir is absent
|
// create dir is absent
|
||||||
FileUtils.createIfAbsent(Paths.get(staticDir.toString()));
|
FileUtils.createIfAbsent(Paths.get(staticDir.toString()));
|
||||||
Files.createFile(uploadPath);
|
Files.createFile(uploadPath);
|
||||||
file.transferTo(uploadPath);
|
file.transferTo(uploadPath);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
LogUtil.error("文件上传失败",e);
|
LogUtil.error("文件上传失败", e);
|
||||||
DataEaseException.throwException("文件上传失败");
|
DataEaseException.throwException("文件上传失败");
|
||||||
} catch (Exception e){
|
} catch (Exception e) {
|
||||||
DataEaseException.throwException(e);
|
DataEaseException.throwException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void saveFilesToServe(String staticResource){
|
private boolean isImage(MultipartFile file) {
|
||||||
|
BufferedImage image = null;
|
||||||
|
try (InputStream input = file.getInputStream()) {
|
||||||
|
image = ImageIO.read(input);
|
||||||
|
} catch (IOException e) {
|
||||||
|
LogUtil.error(e.getMessage(), e);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (image == null || image.getWidth() <= 0 || image.getHeight() <= 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void saveFilesToServe(String staticResource) {
|
||||||
Gson gson = new Gson();
|
Gson gson = new Gson();
|
||||||
if(StringUtils.isNotEmpty(staticResource)){
|
if (StringUtils.isNotEmpty(staticResource)) {
|
||||||
Map<String,String> resource = gson.fromJson(staticResource,Map.class);
|
Map<String, String> resource = gson.fromJson(staticResource, Map.class);
|
||||||
for(Map.Entry<String,String> entry:resource.entrySet()){
|
for (Map.Entry<String, String> entry : resource.entrySet()) {
|
||||||
String path = entry.getKey();
|
String path = entry.getKey();
|
||||||
String fileName = path.substring(path.lastIndexOf("/")+1,path.length());
|
String fileName = path.substring(path.lastIndexOf("/") + 1, path.length());
|
||||||
saveSingleFileToServe(fileName,entry.getValue());
|
saveSingleFileToServe(fileName, entry.getValue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void saveSingleFileToServe(String fileName,String content){
|
public void saveSingleFileToServe(String fileName, String content) {
|
||||||
Path uploadPath = Paths.get(staticDir.toString(), fileName);
|
Path uploadPath = Paths.get(staticDir.toString(), fileName);
|
||||||
try{
|
try {
|
||||||
if (uploadPath.toFile().exists()) {
|
if (uploadPath.toFile().exists()) {
|
||||||
LogUtil.info("file exists");
|
LogUtil.info("file exists");
|
||||||
}else{
|
} else {
|
||||||
if(StringUtils.isNotEmpty(content)){
|
if (StringUtils.isNotEmpty(content)) {
|
||||||
Files.createFile(uploadPath);
|
Files.createFile(uploadPath);
|
||||||
FileCopyUtils.copy(Base64Decoder.decode(content),Files.newOutputStream(uploadPath));
|
FileCopyUtils.copy(Base64Decoder.decode(content), Files.newOutputStream(uploadPath));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}catch (Exception e){
|
} catch (Exception e) {
|
||||||
LogUtil.error("template static resource save error"+e.getMessage());
|
LogUtil.error("template static resource save error" + e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<String,String> findResourceAsBase64(StaticResourceRequest resourceRequest){
|
public Map<String, String> findResourceAsBase64(StaticResourceRequest resourceRequest) {
|
||||||
Map<String,String> result = new HashMap<>();
|
Map<String, String> result = new HashMap<>();
|
||||||
if(CollectionUtil.isNotEmpty(resourceRequest.getResourcePathList())){
|
if (CollectionUtil.isNotEmpty(resourceRequest.getResourcePathList())) {
|
||||||
for(String path :resourceRequest.getResourcePathList()){
|
for (String path : resourceRequest.getResourcePathList()) {
|
||||||
String value = StaticResourceUtils.getImgFileToBase64(path.substring(path.lastIndexOf("/")+1,path.length()));
|
String value = StaticResourceUtils.getImgFileToBase64(path.substring(path.lastIndexOf("/") + 1, path.length()));
|
||||||
result.put(path,value);
|
result.put(path, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ import store from '@/store'
|
|||||||
|
|
||||||
export function uploadFile(fileId, param) {
|
export function uploadFile(fileId, param) {
|
||||||
return request({
|
return request({
|
||||||
url: '/static/resource/upload/' + fileId,
|
url: '/staticResource/upload/' + fileId,
|
||||||
method: 'post',
|
method: 'post',
|
||||||
headers: { 'Content-Type': 'multipart/form-data' },
|
headers: { 'Content-Type': 'multipart/form-data' },
|
||||||
data: param,
|
data: param,
|
||||||
@ -26,7 +26,7 @@ export function uploadFileResult(file, callback) {
|
|||||||
|
|
||||||
export function findResourceAsBase64(params) {
|
export function findResourceAsBase64(params) {
|
||||||
return request({
|
return request({
|
||||||
url: '/static/resource/findResourceAsBase64',
|
url: '/staticResource/findResourceAsBase64',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: params,
|
data: params,
|
||||||
loading: false
|
loading: false
|
||||||
|
Loading…
Reference in New Issue
Block a user