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条件查询时已添加不查询下架的条件 但仍能查询到 

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部