ToB企服应用市场:ToB评测及商务社交产业平台
标题:
文件批量上传,oss使用时间戳解决同名问题 以及一些sql bug
[打印本页]
作者:
王柳
时间:
2024-8-17 12:05
标题:
文件批量上传,oss使用时间戳解决同名问题 以及一些sql bug
1.文件批量上传
@ApiOperation(value = "文件批量上传")
@PostMapping("/multipleImageUpload")
@Transactional(rollbackFor = Exception.class)
public Result multipleImageUpload(@ApiParam(name = "files",value = "文件",required = true) @RequestParam("files") MultipartFile[] files) {
System.out.println("上传的图片数"+files.length);
List<String> imageList = new ArrayList<>();
for (MultipartFile file : files) {
if (!file.getContentType().startsWith("image/")) {
return new Result(4000, "只允许上传图片文件");
}
String filename = file.getOriginalFilename();
String uploadUrl = OssUtils.upload(file,filename);
imageList.add(uploadUrl);
}
if (imageList.isEmpty()){
return new Result(4001,"您未上传图片");
}
return new Result(2000,"图片批量上传成功",imageList);
}
复制代码
1.1多文件上传时使用数组 MultipartFile[ ] files
此中要加上@RequestParam("files") files 要和 参数列表中的参数名称一致
这雷同于springMVC架构 添加web 依赖
若传入文件 会把哀求头改为 multipart
1.2大坑
由于swagger2.xx 版本 不支持多文件上传,仅支持单文件上传,多文件上传时会报错 500
2.使用时间戳进行oss上传
public static String upload(MultipartFile file, String path) {
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endPoint, accessKeyId, secretAccessKey);
try {
//创建唯一图片名称 + 唯一的时间戳
String timeStampPath = addTimeStampToPath(path);
// 创建PutObject请求。
ossClient.putObject(bucketName, timeStampPath, file.getInputStream());
String url = ossUrl + "/" + timeStampPath;
return url;
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
复制代码
才开始我计划对url 进行操纵 厥后才发现没有啥卵用
由于主要是通过这里面的路径来毗连的
2.1进行时间戳的拼接
private static String addTimeStampToPath(String path) {
String fileName = path;
//获取文件拓展名
String extension = "";
int dotIndex = path.lastIndexOf(".");
if(dotIndex > 0){
extension = path.substring(dotIndex);
fileName = path.substring(0,dotIndex);
}
//获取当前时间戳
String timeStamp = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
return fileName +"_"+ timeStamp + extension;
}
复制代码
返回的时文件名+时间戳
3.近日发现的一些bug
3.1当我的状态为0时,一查询就会查出来所有的状态值
本来是这样写的,if test ="status != null and status != '' " 这样的话传入0就会查找所有的值
why?
想想缘故起因应该是这样的 : 当你加入 status != "" 时,mybatis 大概会把status 判定为字符串。那 0 就是空 直接省略该选项
3.2条件查询时已添加不查询下架的条件 但仍能查询到
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4