修改上传位置

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.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; 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.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
@ -36,7 +35,7 @@ public class FileController {
public ApiResponse<?> upload(@RequestParam(value = "file") MultipartFile file) throws IOException { public ApiResponse<?> upload(@RequestParam(value = "file") MultipartFile file) throws IOException {
String[] split = file.getOriginalFilename().split("\\."); String[] split = file.getOriginalFilename().split("\\.");
String ext = split[split.length - 1]; 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); return ApiResponse.success(url);
} }

View File

@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.ycwl.basic.annotation.IgnoreToken; import com.ycwl.basic.annotation.IgnoreToken;
import com.ycwl.basic.config.FaceDetectConfig;
import com.ycwl.basic.mapper.DeviceMapper; import com.ycwl.basic.mapper.DeviceMapper;
import com.ycwl.basic.mapper.FaceSampleMapper; import com.ycwl.basic.mapper.FaceSampleMapper;
import com.ycwl.basic.mapper.SourceMapper; 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.service.task.TaskFaceService;
import com.ycwl.basic.storage.StorageFactory; import com.ycwl.basic.storage.StorageFactory;
import com.ycwl.basic.storage.adapters.IStorageAdapter; 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.ImageUtils;
import com.ycwl.basic.utils.IpUtils; import com.ycwl.basic.utils.IpUtils;
import com.ycwl.basic.utils.SnowFlakeUtil; import com.ycwl.basic.utils.SnowFlakeUtil;
@ -42,7 +40,6 @@ import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.List; 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.service.task.TaskFaceService;
import com.ycwl.basic.storage.StorageFactory; import com.ycwl.basic.storage.StorageFactory;
import com.ycwl.basic.storage.adapters.IStorageAdapter; 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.storage.utils.StorageUtil;
import com.ycwl.basic.utils.DateUtils; import com.ycwl.basic.utils.DateUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -49,7 +48,6 @@ import com.aliyuncs.profile.DefaultProfile;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; 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.req.TaskReqQuery;
import com.ycwl.basic.model.pc.task.resp.TaskRespVO; 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.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.template.resp.TemplateRespVO;
import com.ycwl.basic.model.pc.video.entity.VideoEntity; import com.ycwl.basic.model.pc.video.entity.VideoEntity;
import com.ycwl.basic.model.task.req.ClientStatusReqVo; 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.service.task.TaskService;
import com.ycwl.basic.storage.StorageFactory; import com.ycwl.basic.storage.StorageFactory;
import com.ycwl.basic.storage.adapters.IStorageAdapter; import com.ycwl.basic.storage.adapters.IStorageAdapter;
import com.ycwl.basic.storage.enums.StorageType;
import com.ycwl.basic.task.VideoPieceGetter; import com.ycwl.basic.task.VideoPieceGetter;
import com.ycwl.basic.utils.SnowFlakeUtil; import com.ycwl.basic.utils.SnowFlakeUtil;
import lombok.NonNull; import lombok.NonNull;
@ -329,16 +327,16 @@ public class TaskTaskServiceImpl implements TaskService {
if (task == null) { if (task == null) {
return null; return null;
} }
IStorageAdapter adapter = StorageFactory.use("faces"); IStorageAdapter adapter = StorageFactory.use("video");
String filename = task.getId() + "_" + task.getScenicId() + ".mp4"; String filename = task.getId() + "_" + task.getScenicId() + ".mp4";
if (StringUtils.isBlank(task.getVideoUrl())) { if (StringUtils.isBlank(task.getVideoUrl())) {
// 生成 // 生成
String url = adapter.getUrl("user-video", filename); String url = adapter.getUrl(filename);
TaskEntity updateTask = new TaskEntity(); TaskEntity updateTask = new TaskEntity();
updateTask.setId(taskId); updateTask.setId(taskId);
updateTask.setVideoUrl(url); updateTask.setVideoUrl(url);
taskMapper.update(updateTask); 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; package com.ycwl.basic.storage.adapters;
import com.ycwl.basic.storage.entity.StorageConfig;
import com.ycwl.basic.storage.exceptions.UploadFileFailedException; import com.ycwl.basic.storage.exceptions.UploadFileFailedException;
import lombok.Setter;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.File; import java.io.File;
@ -14,33 +12,33 @@ import java.util.Date;
public abstract class AStorageAdapter implements IStorageAdapter { public abstract class AStorageAdapter implements IStorageAdapter {
@Override @Override
public String uploadFile(File file, String path, String filename) { public String uploadFile(File file, String ...path) {
if (file == null) { if (file == null) {
return null; return null;
} }
try { try {
InputStream inputStream = new FileInputStream(file); InputStream inputStream = new FileInputStream(file);
return uploadFile(inputStream, path, filename); return uploadFile(inputStream, path);
} catch (FileNotFoundException e) { } catch (FileNotFoundException e) {
throw new UploadFileFailedException("文件不存在"); throw new UploadFileFailedException("文件不存在");
} }
} }
@Override @Override
public String uploadFile(MultipartFile file, String path, String filename) { public String uploadFile(MultipartFile file, String... path) {
if (file == null) { if (file == null) {
return null; return null;
} }
try { try {
InputStream inputStream = file.getInputStream(); InputStream inputStream = file.getInputStream();
return uploadFile(inputStream, path, filename); return uploadFile(inputStream, path);
} catch (Exception e) { } catch (Exception e) {
throw new UploadFileFailedException("文件上传失败"); throw new UploadFileFailedException("文件上传失败");
} }
} }
@Override @Override
public String getUrlForUpload(String path, String filename) { public String getUrlForUpload(String... path) {
return getUrlForUpload(path, filename, new Date(System.currentTimeMillis() + 1000 * 60 * 60)); 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.Date;
import java.util.Map; import java.util.Map;
public class AliOssAdapter extends AStorageAdapter { final public class AliOssAdapter extends AStorageAdapter {
private AliOssStorageConfig config; private AliOssStorageConfig config;
@Override @Override
@ -48,16 +48,16 @@ public class AliOssAdapter extends AStorageAdapter {
} }
@Override @Override
public String uploadFile(InputStream inputStream, String path, String filename) { public String uploadFile(InputStream inputStream, String ...path) {
if (inputStream == null) { if (inputStream == null) {
return null; return null;
} }
String fullPath = buildPath(path, filename); String fullPath = buildPath(path);
OSS ossClient = getOssClient(); OSS ossClient = getOssClient();
try { try {
PutObjectRequest putObjectRequest = new PutObjectRequest(config.getBucketName(), fullPath, inputStream); PutObjectRequest putObjectRequest = new PutObjectRequest(config.getBucketName(), fullPath, inputStream);
ossClient.putObject(putObjectRequest); ossClient.putObject(putObjectRequest);
return getUrl(path, filename); return getUrl(path);
} catch (ClientException e) { } catch (ClientException e) {
throw new UploadFileFailedException("上传文件失败:" + e.getErrorMessage()); throw new UploadFileFailedException("上传文件失败:" + e.getErrorMessage());
} }
@ -65,10 +65,10 @@ public class AliOssAdapter extends AStorageAdapter {
@Override @Override
public boolean deleteFile(String path, String filename) { public boolean deleteFile(String... path) {
OSS ossClient = getOssClient(); OSS ossClient = getOssClient();
try { try {
ossClient.deleteObject(config.getBucketName(), buildPath(path, filename)); ossClient.deleteObject(config.getBucketName(), buildPath(path));
return true; return true;
} catch (ClientException e) { } catch (ClientException e) {
return false; return false;
@ -76,14 +76,14 @@ public class AliOssAdapter extends AStorageAdapter {
} }
@Override @Override
public String getUrl(String path, String filename) { public String getUrl(String... path) {
return config.getUrl() + "/" + buildPath(path, filename); return config.getUrl() + "/" + buildPath(path);
} }
@Override @Override
public String getUrlForUpload(String path, String filename, Date expireDate) { public String getUrlForUpload(Date expireDate, String... path) {
OSS ossClient = getOssClient(); 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(); return url.toString();
} }

View File

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

View File

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

View File

@ -143,7 +143,16 @@ storage:
prefix: "user-assets/" prefix: "user-assets/"
url: "https://oss.zhentuai.com" url: "https://oss.zhentuai.com"
region: "cn-shanghai" 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: aliFace:
accessKeyId: "LTAI5tMwrmxVcUEKoH5QzLHx" accessKeyId: "LTAI5tMwrmxVcUEKoH5QzLHx"

View File

@ -141,6 +141,16 @@ storage:
prefix: "user-assets/" prefix: "user-assets/"
url: "https://oss.zhentuai.com" url: "https://oss.zhentuai.com"
region: "cn-shanghai" 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: aliFace: