阿里云OSS

一. 注意:

1. 通过网络流的形式进行上传;
2. 上传相同文件名字会被默认覆盖老文件;
3. API地址:https://help.aliyun.com/document_detail/32008.html?spm=5176.208357.1107607.21.7120390fYfcRRz

二. 准备工作:

1. 进入阿里云 - 对象存储OSS;
2. 进入Bucket列表创建Bucket,创建时选择的区域一定与ECS所在同一区域,保存创建时的Bucket名称,如下图;

3. 进入创建好的Bucket,保存访问域名,本地调试采用外网节点访问,上线时切换为内网节点访问
4. 在文件管理下“新建目录”,保存目录名称;
5. 获取AccessKey和AccessKey Secret,位置:对象存储OSS - 右侧“常用入口” - Access Key进行获取
6. JAVA SDK 如下:
    <dependency>
        <groupId>com.aliyun.oss</groupId>
        <artifactId>aliyun-sdk-oss</artifactId>
        <version>3.10.2</version>
    </dependency>

三. 上传文件JAVA部分:

    // Endpoint以杭州为例,其它Region请按实际情况填写。
    public static String endpoint = "oss-cn-zhangjiakou.aliyuncs.com";//外网访问
    // 把之前保存的门票粘贴到
    public static String accessKeyId = "";
    public static String accessKeySecret = "";
    //bucket名称
    public static String bucketName = "matri-warehouse";
    //文件目录
    public static String folderName = "warehouseFile/";

    // 上传文件
    @RequestMapping("/uploadFile")
    public Object uploadFile(@RequestBody List<MultipartFile> file) {
        // 创建OSSClient实例
        OSS ossClient = OSSClientBuilder().build(OssUtils.endpoint, OssUtils.accessKeyId, OssUtils.accessKeySecret);

        List<Integer> idList = new ArrayList<>();
        for (MultipartFile f : file) {
            int last = f.getOriginalFilename().lastIndexOf(".");
            String fileName = new Date().getTime() + f.getOriginalFilename().substring(last,f.getOriginalFilename().length()).toLowerCase();//重新规定文件名
            try {
                ObjectMetadata metadata = new ObjectMetadata();
                metadata.setObjectAcl(CannedAccessControlList.PublicRead);//设置为公共读
                // 上传文件。
                ossClient.putObject(OssUtils.bucketName, OssUtils.folderName + fileName, f.getInputStream(), metadata);
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
        // 关闭OSSClient。
        ossClient.shutdown();
        return null;
    }

四. 下载文件到本地JAVA部分

public Object downloadFile(){
    // 创建OSSClient实例
    OSS ossClient = new OSSClientBuilder().build(OssUtils.endpoint, OssUtils.accessKeyId, OssUtils.accessKeySecret);

    // 下载OSS文件到本地文件。如果指定的本地文件存在会覆盖,不存在则新建。
    ossClient.getObject(new GetObjectRequest(OssUtils.bucketName, "OSS文件目录/带后缀文件全名"), new File("本地文件路径"+"带后缀文件全名"));

    // 关闭OSSClient。
    ossClient.shutdown();
    return null;
}