zoukankan      html  css  js  c++  java
  • 阿里云oss对象操作

    上传图片

    1、获取yml配置文件的中的endpoint、accessKeyId、accessKeySecret、bucketName
    aliyun:
      oss:
        endpoint: oss-cn-hangzhou.aliyuncs.com
        accessKeyId: 改成自己的id
        accessKeySecret: 改成自己的秘钥
        bucketName: mall-qsd
    

    yml配置(上图)

    @Value("${aliyun.oss.endpoint}")
    private String ALIYUN_OSS_ENDPOINT;
    
    @Value("${aliyun.oss.accessKeyId}")
    private String ALIYUN_OSS_ACCESSKEYID;
    
    @Value("${aliyun.oss.accessKeySecret}")
    private String ALIYUN_OSS_ACCESSKEYSECRET;
    
    @Value("${aliyun.oss.bucketName}")
    private String ALIYUN_OSS_BUCKETNAME;
    

    2、创建上传文件的元信息,可以通过文件元信息设置HTTP header。

    ObjectMetadata objectMetadata = new ObjectMetadata();
    objectMetadata.setContentType("image/jpg");
    

    3、创建OSSClient实例

    OSSClient ossClient = new OSSClient(ALIYUN_OSS_ENDPOINT, ALIYUN_OSS_ACCESSKEYID, ALIYUN_OSS_ACCESSKEYSECRET);
    

    4、文件上传(完整代码)代码

    public String uploadFile(MultipartFile file) throws IOException {
    OSSClient ossClient = new OSSClient(ALIYUN_OSS_ENDPOINT, ALIYUN_OSS_ACCESSKEYID, ALIYUN_OSS_ACCESSKEYSECRET);
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
    
    
    // 获取文件名
    String fileName = multipartFile.getOriginalFilename();
        
    // 获取文件后缀名
    String suffixName = fileName.substring(fileName.lastIndexOf("."));
        
    // 最后上传生成的文件名
    String finalFileName = System.currentTimeMillis() + "" + new SecureRandom().nextInt(0x0400) + suffixName;
        
    // oss中的文件夹名
    String objectName = sdf.format(new Date()) + "/" + finalFileName;
    
    // 创建上传文件的元信息,可以通过文件元信息设置HTTP header(设置了才能通过返回的链接直接访问)。
    ObjectMetadata objectMetadata = new ObjectMetadata();
    objectMetadata.setContentType("image/jpg");
    
    // 文件上传
    ossClient.putObject(ALIYUN_OSS_BUCKETNAME, objectName, new ByteArrayInputStream(multipartFile.getBytes()),objectMetadata);
    
    
    // 设置URL过期时间为1小时。
    Date expiration = new Date(System.currentTimeMillis() + 3600 * 1000);
    String url = ossClient.generatePresignedUrl(ALIYUN_OSS_BUCKETNAME, objectName, expiration).toString();
    ossClient.shutdown();
    log.info("阿里云OSS的文件url:{}", url);
    return url;
    }
    

    5、返回的url:http://mall-qsd.oss-cn-hangzhou.aliyuncs.com/20200623/1592906142043520.jpg

    6、点击链接就能直接访问了(链接设置了过期时间)

    删除图片

        /**
         * url :http://gulimall-code.oss-cn-zhangjiakou.aliyuncs.com/heima-leadnews/2020-10-10/13.jpg?Expires=1633871695&OSSAccessKeyId=LTAI4GAcBHYL68nTwPr5X6Yt&Signature=XIPBZQQS%2FDBFkIcS5dhPrhr11lg%3D
         *
         * @param url
         * @return
         */
        public String delFile(String url) {
            // 创建OSSClient实例。
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            String[] split = url.split("\?");
            String objectName = split[0].replace("http://gulimall-code.oss-cn-zhangjiakou.aliyuncs.com/", "");
            //转换后的objectName为heima-leadnews/2020-10-10/13.jpg
            // 删除文件。如需删除文件夹,请将ObjectName设置为对应的文件夹名称。如果文件夹非空,则需要将文件夹下的所有object删除后才能删除该文件夹。
            ossClient.deleteObject(bucketName, objectName);
            // 关闭OSSClient。
            ossClient.shutdown();
            return "null";
        }
    
  • 相关阅读:
    【Vue CLI】手把手教你撸插件
    深入理解web协议(二):DNS、WebSocket
    同城双活与异地多活架构分析
    vivo 商城前端架构升级-总览篇
    原CSDN搬家地址
    PHP 7.1安装xhprof进行性能分析
    nginx配置http和https可同时访问方法, listen ssl与 ssl on区别
    sudo pm2 找不到命令
    HAProxy配置SSL
    docker部署nginx+php的 各种坑
  • 原文地址:https://www.cnblogs.com/idcode/p/14551421.html
Copyright © 2011-2022 走看看