修改上传位置

This commit is contained in:
Jerry Yan 2024-12-27 13:55:33 +08:00
parent 02b1aba9a2
commit 7a55a0b843
10 changed files with 51 additions and 42 deletions

View File

@ -8,7 +8,6 @@ import com.ycwl.basic.utils.ApiResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@ -36,7 +35,7 @@ public class FileController {
public ApiResponse<?> upload(@RequestParam(value = "file") MultipartFile file) throws IOException {
String[] split = file.getOriginalFilename().split("\\.");
String ext = split[split.length - 1];
String url = StorageFactory.use("assets").uploadFile(file, "web", UUID.randomUUID()+"."+ext);
String url = StorageFactory.use("assets").uploadFile(file, "web", UUID.randomUUID() + "." + ext);
return ApiResponse.success(url);
}

View File

@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.ycwl.basic.annotation.IgnoreToken;
import com.ycwl.basic.config.FaceDetectConfig;
import com.ycwl.basic.mapper.DeviceMapper;
import com.ycwl.basic.mapper.FaceSampleMapper;
import com.ycwl.basic.mapper.SourceMapper;
@ -28,7 +27,6 @@ import com.ycwl.basic.model.viid.resp.VIIDBaseResp;
import com.ycwl.basic.service.task.TaskFaceService;
import com.ycwl.basic.storage.StorageFactory;
import com.ycwl.basic.storage.adapters.IStorageAdapter;
import com.ycwl.basic.storage.enums.StorageType;
import com.ycwl.basic.utils.ImageUtils;
import com.ycwl.basic.utils.IpUtils;
import com.ycwl.basic.utils.SnowFlakeUtil;
@ -42,7 +40,6 @@ import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

View File

@ -35,7 +35,6 @@ import com.ycwl.basic.model.task.resp.SearchFaceRespVo;
import com.ycwl.basic.service.task.TaskFaceService;
import com.ycwl.basic.storage.StorageFactory;
import com.ycwl.basic.storage.adapters.IStorageAdapter;
import com.ycwl.basic.storage.enums.StorageType;
import com.ycwl.basic.storage.utils.StorageUtil;
import com.ycwl.basic.utils.DateUtils;
import lombok.extern.slf4j.Slf4j;
@ -49,7 +48,6 @@ import com.aliyuncs.profile.DefaultProfile;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;

View File

@ -18,7 +18,6 @@ import com.ycwl.basic.model.pc.task.entity.TaskEntity;
import com.ycwl.basic.model.pc.task.req.TaskReqQuery;
import com.ycwl.basic.model.pc.task.resp.TaskRespVO;
import com.ycwl.basic.model.pc.template.entity.TemplateEntity;
import com.ycwl.basic.model.pc.template.req.TemplateReqQuery;
import com.ycwl.basic.model.pc.template.resp.TemplateRespVO;
import com.ycwl.basic.model.pc.video.entity.VideoEntity;
import com.ycwl.basic.model.task.req.ClientStatusReqVo;
@ -28,7 +27,6 @@ import com.ycwl.basic.model.task.resp.TaskSyncRespVo;
import com.ycwl.basic.service.task.TaskService;
import com.ycwl.basic.storage.StorageFactory;
import com.ycwl.basic.storage.adapters.IStorageAdapter;
import com.ycwl.basic.storage.enums.StorageType;
import com.ycwl.basic.task.VideoPieceGetter;
import com.ycwl.basic.utils.SnowFlakeUtil;
import lombok.NonNull;
@ -329,16 +327,16 @@ public class TaskTaskServiceImpl implements TaskService {
if (task == null) {
return null;
}
IStorageAdapter adapter = StorageFactory.use("faces");
IStorageAdapter adapter = StorageFactory.use("video");
String filename = task.getId() + "_" + task.getScenicId() + ".mp4";
if (StringUtils.isBlank(task.getVideoUrl())) {
// 生成
String url = adapter.getUrl("user-video", filename);
String url = adapter.getUrl(filename);
TaskEntity updateTask = new TaskEntity();
updateTask.setId(taskId);
updateTask.setVideoUrl(url);
taskMapper.update(updateTask);
}
return adapter.getUrlForUpload("user-video", filename);
return adapter.getUrlForUpload(filename);
}
}

View File

@ -1,8 +1,6 @@
package com.ycwl.basic.storage.adapters;
import com.ycwl.basic.storage.entity.StorageConfig;
import com.ycwl.basic.storage.exceptions.UploadFileFailedException;
import lombok.Setter;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
@ -14,33 +12,33 @@ import java.util.Date;
public abstract class AStorageAdapter implements IStorageAdapter {
@Override
public String uploadFile(File file, String path, String filename) {
public String uploadFile(File file, String ...path) {
if (file == null) {
return null;
}
try {
InputStream inputStream = new FileInputStream(file);
return uploadFile(inputStream, path, filename);
return uploadFile(inputStream, path);
} catch (FileNotFoundException e) {
throw new UploadFileFailedException("文件不存在");
}
}
@Override
public String uploadFile(MultipartFile file, String path, String filename) {
public String uploadFile(MultipartFile file, String... path) {
if (file == null) {
return null;
}
try {
InputStream inputStream = file.getInputStream();
return uploadFile(inputStream, path, filename);
return uploadFile(inputStream, path);
} catch (Exception e) {
throw new UploadFileFailedException("文件上传失败");
}
}
@Override
public String getUrlForUpload(String path, String filename) {
return getUrlForUpload(path, filename, new Date(System.currentTimeMillis() + 1000 * 60 * 60));
public String getUrlForUpload(String... path) {
return getUrlForUpload(new Date(System.currentTimeMillis() + 1000 * 60 * 60), path);
}
}

View File

@ -18,7 +18,7 @@ import java.net.URL;
import java.util.Date;
import java.util.Map;
public class AliOssAdapter extends AStorageAdapter {
final public class AliOssAdapter extends AStorageAdapter {
private AliOssStorageConfig config;
@Override
@ -48,16 +48,16 @@ public class AliOssAdapter extends AStorageAdapter {
}
@Override
public String uploadFile(InputStream inputStream, String path, String filename) {
public String uploadFile(InputStream inputStream, String ...path) {
if (inputStream == null) {
return null;
}
String fullPath = buildPath(path, filename);
String fullPath = buildPath(path);
OSS ossClient = getOssClient();
try {
PutObjectRequest putObjectRequest = new PutObjectRequest(config.getBucketName(), fullPath, inputStream);
ossClient.putObject(putObjectRequest);
return getUrl(path, filename);
return getUrl(path);
} catch (ClientException e) {
throw new UploadFileFailedException("上传文件失败:" + e.getErrorMessage());
}
@ -65,10 +65,10 @@ public class AliOssAdapter extends AStorageAdapter {
@Override
public boolean deleteFile(String path, String filename) {
public boolean deleteFile(String... path) {
OSS ossClient = getOssClient();
try {
ossClient.deleteObject(config.getBucketName(), buildPath(path, filename));
ossClient.deleteObject(config.getBucketName(), buildPath(path));
return true;
} catch (ClientException e) {
return false;
@ -76,14 +76,14 @@ public class AliOssAdapter extends AStorageAdapter {
}
@Override
public String getUrl(String path, String filename) {
return config.getUrl() + "/" + buildPath(path, filename);
public String getUrl(String... path) {
return config.getUrl() + "/" + buildPath(path);
}
@Override
public String getUrlForUpload(String path, String filename, Date expireDate) {
public String getUrlForUpload(Date expireDate, String... path) {
OSS ossClient = getOssClient();
URL url = ossClient.generatePresignedUrl(config.getBucketName(), buildPath(path, filename), expireDate, HttpMethod.PUT);
URL url = ossClient.generatePresignedUrl(config.getBucketName(), buildPath(path), expireDate, HttpMethod.PUT);
return url.toString();
}

View File

@ -11,11 +11,11 @@ import java.util.Map;
public interface IStorageAdapter {
void loadConfig(Map<String, String> config);
void setConfig(StorageConfig config);
String uploadFile(InputStream inputStream, String path, String filename);
String uploadFile(File file, String path, String filename);
String uploadFile(MultipartFile file, String path, String filename);
boolean deleteFile(String path, String filename);
String getUrl(String path, String filename);
String getUrlForUpload(String path, String filename);
String getUrlForUpload(String path, String filename, Date expireDate);
String uploadFile(InputStream inputStream, String ...path);
String uploadFile(File file, String ...path);
String uploadFile(MultipartFile file, String ...path);
boolean deleteFile(String ...path);
String getUrl(String ...path);
String getUrlForUpload(String ...path);
String getUrlForUpload(Date expireDate, String ...path);
}

View File

@ -18,22 +18,22 @@ public class LocalStorageAdapter extends AStorageAdapter{
}
@Override
public String uploadFile(InputStream inputStream, String path, String filename) {
public String uploadFile(InputStream inputStream, String... path) {
return "";
}
@Override
public boolean deleteFile(String path, String filename) {
public boolean deleteFile(String... path) {
return false;
}
@Override
public String getUrl(String path, String filename) {
public String getUrl(String... path) {
return "";
}
@Override
public String getUrlForUpload(String path, String filename, Date expireDate) {
public String getUrlForUpload(Date expireDate, String... path) {
return "";
}
}

View File

@ -143,7 +143,16 @@ storage:
prefix: "user-assets/"
url: "https://oss.zhentuai.com"
region: "cn-shanghai"
- name: "video"
type: "ALI_OSS"
config:
endpoint: "https://oss-cn-shanghai.aliyuncs.com"
accessKeyId: "LTAI5tCa641QdNHH9Ybg9u7V"
accessKeySecret: "RRVIgekoqx96Fgm2Gs7eQshMShcEpk"
bucketName: "frametour-assets"
prefix: "user-video/"
url: "https://oss.zhentuai.com"
region: "cn-shanghai"
#阿里云人脸检测
aliFace:
accessKeyId: "LTAI5tMwrmxVcUEKoH5QzLHx"

View File

@ -141,6 +141,16 @@ storage:
prefix: "user-assets/"
url: "https://oss.zhentuai.com"
region: "cn-shanghai"
- name: "video"
type: "ALI_OSS"
config:
endpoint: "https://oss-cn-shanghai.aliyuncs.com"
accessKeyId: "LTAI5tCa641QdNHH9Ybg9u7V"
accessKeySecret: "RRVIgekoqx96Fgm2Gs7eQshMShcEpk"
bucketName: "frametour-assets"
prefix: "user-video/"
url: "https://oss.zhentuai.com"
region: "cn-shanghai"
#阿里云人脸检测
aliFace: