ToB企服应用市场:ToB评测及商务社交产业平台

标题: 文件批量上传,oss使用时间戳解决同名问题 以及一些sql bug [打印本页]

作者: 王柳    时间: 2024-8-17 12:05
标题: 文件批量上传,oss使用时间戳解决同名问题 以及一些sql bug
1.文件批量上传

  1.     @ApiOperation(value = "文件批量上传")
  2.     @PostMapping("/multipleImageUpload")
  3.     @Transactional(rollbackFor = Exception.class)
  4.     public Result multipleImageUpload(@ApiParam(name = "files",value = "文件",required = true) @RequestParam("files") MultipartFile[] files) {
  5.         System.out.println("上传的图片数"+files.length);
  6.         List<String> imageList = new ArrayList<>();
  7.         for (MultipartFile file : files) {
  8.             if (!file.getContentType().startsWith("image/")) {
  9.                 return new Result(4000, "只允许上传图片文件");
  10.             }
  11.             String filename = file.getOriginalFilename();
  12.             String uploadUrl = OssUtils.upload(file,filename);
  13.             imageList.add(uploadUrl);
  14.         }
  15.         if (imageList.isEmpty()){
  16.             return new Result(4001,"您未上传图片");
  17.         }
  18.         return new Result(2000,"图片批量上传成功",imageList);
  19.     }
复制代码
1.1多文件上传时使用数组 MultipartFile[ ] files  

此中要加上@RequestParam("files") files 要和 参数列表中的参数名称一致
这雷同于springMVC架构 添加web 依赖

若传入文件 会把哀求头改为 multipart
1.2大坑 

由于swagger2.xx 版本 不支持多文件上传,仅支持单文件上传,多文件上传时会报错 500
2.使用时间戳进行oss上传

  1. public static String upload(MultipartFile file, String path) {
  2.         // 创建OSSClient实例。
  3.         OSS ossClient = new OSSClientBuilder().build(endPoint, accessKeyId, secretAccessKey);
  4.         try {
  5.             //创建唯一图片名称 + 唯一的时间戳
  6.             String timeStampPath = addTimeStampToPath(path);
  7.             // 创建PutObject请求。
  8.             ossClient.putObject(bucketName, timeStampPath, file.getInputStream());
  9.             String url = ossUrl + "/" + timeStampPath;
  10.             return url;
  11.         } catch (Exception e) {
  12.             e.printStackTrace();
  13.             return null;
  14.         } finally {
  15.             if (ossClient != null) {
  16.                 ossClient.shutdown();
  17.             }
  18.         }
  19.     }
复制代码
才开始我计划对url 进行操纵 厥后才发现没有啥卵用 
由于主要是通过这里面的路径来毗连的 

2.1进行时间戳的拼接

  1.     private static String addTimeStampToPath(String path) {
  2.         String fileName = path;
  3.         //获取文件拓展名
  4.         String extension = "";
  5.         int dotIndex = path.lastIndexOf(".");
  6.         if(dotIndex > 0){
  7.             extension = path.substring(dotIndex);
  8.             fileName = path.substring(0,dotIndex);
  9.         }
  10.         //获取当前时间戳
  11.         String timeStamp = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
  12.         return fileName +"_"+ timeStamp + extension;
  13.     }
复制代码
返回的时文件名+时间戳 
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