JAVA开发 OSS上传文件

开通并部署 OSS

参考链接:OSS 上传压缩文件,并自动解压

相关依赖:

		<dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>2.8.3</version>
        </dependency>

找到开发相关的信息:

获取 accessKeyId ,accessKeySecret
在这里插入图片描述

在这里插入图片描述

获取 bucketName ,选择指定的 Bucket 列表,复制名称就行了
在这里插入图片描述
## 获取 endpoint , 点击指定的 Bucket ,地域不同的 Bucket 的 endpoint 是不一样的
在这里插入图片描述
OSS上传工具类:

package com.b2bwings.datacoreservice.common.util;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.*;
import org.springframework.util.CollectionUtils;

import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class utils {

    public static final String endpoint = "xxxxxxxxxxxxxxxxxxxxxxxx";
    public static final String accessKeyId = "xxxxxxxxxxxxxxxxxxxxxxxx";
    public static final String accessKeySecret = "xxxxxxxxxxxxxxxxxxxxxxxx";
    public static final String bucketName = "xxxxxxxxxxxxxxxxxxxxxxxx";

    public static OSS ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);

    public static void main(String[] args) throws Exception {
        String fileName  = "code.zip[rsong].1575342717.zip";
        String folderName = "dev/";
        String path = "C:\\Users\\wuxin\\Desktop\\OSS\\";
        uploadFile(fileName, folderName, path);
        System.out.println("上传文件完成。");
    }

    /**
     * 上传文件
     * @param fileName   上传的文件名
     * @param folderName 上传到哪个文件夹
     * @param path       准备上传的文件的路径
     */
    public static void uploadFile(String fileName, String folderName, String path) throws Exception {
        PutObjectResult result = ossClient.putObject(bucketName, folderName + fileName, new File(path + fileName));
        String eTag = result.getETag();
        String requestId = result.getRequestId();
        ossClient.shutdown();
    }

    public static void uploadAllFile(List<String> allFile, String folderName, String path) throws Exception {
        if (!CollectionUtils.isEmpty(allFile)) {
            for (String fileName : allFile) {
                ossClient.putObject(bucketName, folderName + fileName, new File(path + fileName));
                // 上传成功 记录
            }
        }
        ossClient.shutdown();
        System.out.println("全部文件上传完成!");
    }

    /**
     * 获取指定目录下的所有文件
     *
     * @param directoryName 指定目录    dev/
     * @return
     */
    public static List<String> getAllFilesBySpecifyDirectory(String directoryName) {
        List<String> list = new ArrayList<>();
        ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucketName);
        listObjectsRequest.setPrefix(directoryName); //指定下一级文件
        listObjectsRequest.setDelimiter("/");//跳出递归循环,只去指定目录下的文件。使用它时 Prefix文件路径要以“/”结尾
        ObjectListing listing = ossClient.listObjects(listObjectsRequest);
        List<OSSObjectSummary> objectSummaries = listing.getObjectSummaries();
        for (OSSObjectSummary summary : objectSummaries) {
            // 获取文件名
            // key = dev/code.zip[rsong].1575342717.zip
            String key = summary.getKey();
            list.add(key);
        }
        // 关闭OSSClient
        ossClient.shutdown();
        System.out.println("查询文件完成!");
        return list;
    }

    // 流式下载
    public static List<String> streamDownload(String uri) throws Exception {
        // ossObject包含文件所在的存储空间名称、文件名称、文件元信息以及一个输入流。
        OSSObject ossObject = ossClient.getObject(bucketName, uri);

        // 读取文件内容。
        System.out.println("Object content:");
        BufferedReader reader = new BufferedReader(new InputStreamReader(ossObject.getObjectContent(), "GBK"));
        List<String> list = reader.lines().collect(Collectors.toList());
//        while (true) {
//            String line = reader.readLine();
//            if (line == null) break;
//            list.add(line);
//        }
        // 数据读取完成后,获取的流必须关闭,否则会造成连接泄漏,导致请求无连接可用,程序无法正常工作。
        reader.close();
        // 关闭OSSClient。
        ossClient.shutdown();
        return list;
    }
}

测试结果:
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值