上传图片到tomcat以及oss

这里的配置是托管到nacos上的

配置

#Tomcat服务器图片上传地址
pathFile:
  img: D:/apache-tomcat-9.0.41/webapps/img/
fileTomcat: 
  imgUrl: http://192.168.3.8:8083/img/

 

引入nacos配置

    @Value("${pathFile.img}")
    private String pathFileImg;

    @Value("${fileTomcat.imgUrl}")
    private String fileTomcatImgUrl;

 

上传图片到tomcat api

   /**
     * 上传图像到tomcat  测试
     *
     * @param file 图像
     * @return
     */
    @PostMapping("test")
    public AjaxResult test(@RequestParam("file") MultipartFile file) {
        log.info("pathFile->{}", pathFileImg);
        if (!file.isEmpty()) {
            String burl = fileTomcatImgUrl + "businessLicense" + "/";
            String bImg = pathFileImg + "businessLicense" + "/";
            // 获取文件并将其保存在某处
            String myFileOriginalFilename = file.getOriginalFilename();
            assert myFileOriginalFilename != null;
            File file1 = new File(bImg, myFileOriginalFilename);
            //上传图片到tomcat
            try {
                FileUtils.copyInputStreamToFile(file.getInputStream(), file1);
            } catch (IOException e) {
                e.printStackTrace();
            }

            System.out.println("url-->" + burl + myFileOriginalFilename);
            return AjaxResult.success(burl + myFileOriginalFilename);
        }
        return AjaxResult.error("上传失败");
    }

 

上传图片到oss api

    /**
     * oss test
     *
     * @param file 文件
     * @return
     */
    @PostMapping("ossTest")
    public AjaxResult ossTest(@RequestParam("file") MultipartFile file) {
        if (!file.isEmpty()) {
            try {
                // 判断是否图片类型
                String fileExtension = ImageUtil.getFileExtention(Objects.requireNonNull(file.getOriginalFilename()));
                boolean image = ImageUtil.isImage(fileExtension);
                if (image) {
                    return AjaxResult.success(200, OssUtils.uploadFileInputSteam("." + fileExtension, file));
                } else {
                    return AjaxResult.error("文件格式不支持");
                }
            } catch (Exception e) {
                e.printStackTrace();
                return AjaxResult.error(e.getMessage());
            }
        }
        return AjaxResult.error("上传失败");
    }

 

 /**
     * 上传文件流
     *
     * @param oranFileName 上传到服务器上的文件路径和名称
     * @param file         来自本地的文件或者文件流
     */
    public static String uploadFileInputSteam(String oranFileName, MultipartFile file) {

        // <yourObjectName>上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg
        String objectName = getRandomImageName(oranFileName);

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(ENDPOINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);

        // 上传文件流
        try (InputStream inputStream = new FileInputStream(transferToFile(file))) {
            //上传到OSS
            ossClient.putObject(CAINAER_IMG, objectName, inputStream);
        } catch (Exception ex) {
            ex.printStackTrace();
        }

        // 关闭OSSClient。
        ossClient.shutdown();

        //返回文件在服务器上的全路径+名称
        return getRealName(objectName);
    }

 

    /**
     * 获取一个随机的文件名
     *
     * @param oranName 初始的文件名
     * @return 返回加uuid后的文件名
     */
    private static String getRandomImageName(String oranName) {
        //获取一个uuid 去掉-
        String uuid = UUID.randomUUID().toString().replace("-", "");
        //查一下是否带路径
        int cutPoint = oranName.lastIndexOf("/") + 1;
        //如果存在路径
        if (cutPoint != 0) {
            //掐头 如果开头是/ 则去掉
            String head = oranName.indexOf("/") == 0 ? oranName.substring(1, cutPoint) : oranName.substring(0, cutPoint);
            //去尾
            String tail = oranName.substring(cutPoint);
            //返回正确的带路径的图片名称
            return FOLDER + head + uuid + tail;
        }
        //不存在 直接返回
        return FOLDER + uuid + oranName;
    }

 

posted @ 2021-12-09 16:16  安详的苦丁茶  阅读(81)  评论(0编辑  收藏  举报