1. 开通

阿里oss 上传文件 java_阿里oss 上传文件 java

2.创建bucket(类似于包) 

阿里oss 上传文件 java_阿里云_02

 

阿里oss 上传文件 java_Endpoint_03

创建完成

阿里oss 上传文件 java_API_04

 一些监控信息

阿里oss 上传文件 java_阿里云_05

 

阿里oss 上传文件 java_java_06

查看详情

阿里oss 上传文件 java_阿里云_07

点击下载即可

阿里oss 上传文件 java_java_08

3.集成到项目中

阿里oss 上传文件 java_Endpoint_09

阿里oss 上传文件 java_java_10

阿里oss 上传文件 java_Endpoint_11

安装sdk为了方便偷懒,我也复制过来了

阿里oss 上传文件 java_Endpoint_12

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



#java9以后

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.1</version>
</dependency>
<dependency>
    <groupId>javax.activation</groupId>
    <artifactId>activation</artifactId>
    <version>1.1.1</version>
</dependency>
<!-- no more than 2.3.3-->
<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <version>2.3.3</version>
</dependency>
 

阿里oss 上传文件 java_阿里oss 上传文件 java_13

5.初始化

阿里oss 上传文件 java_java_14

阿里oss 上传文件 java_API_15

阿里oss 上传文件 java_阿里oss 上传文件 java_16

新建OSSClient

// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
String endpoint = "yourEndpoint";
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";

// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

// 关闭OSSClient。
ossClient.shutdown();使用IP新建OSSClient
以下代码用于使用IP新建OSSClient。

// 某些特殊情况(例如专有域)下,您需要将IP地址作为Endpoint使用,请根据实际IP地址填写。
String endpoint = "https://10.10.10.10";
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";

// 创建ClientConfiguration。
ClientBuilderConfiguration conf = new ClientBuilderConfiguration();
// 开启二级域名访问OSS,默认不开启。OSS Java SDK 2.1.2及之前的版本需要设置此值,OSS Java SDK 2.1.2及之后的版本会自动检测到IP地址,不需要再设置此值。
conf.setSLDEnabled(true);

// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret, conf);

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

 ossclient的配置

// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
String endpoint = "yourEndpoint";
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";

// 创建ClientConfiguration。ClientConfiguration是OSSClient的配置类,可配置代理、连接超时、最大连接数等参数。
ClientBuilderConfiguration conf = new ClientBuilderConfiguration();

// 设置OSSClient允许打开的最大HTTP连接数,默认为1024个。
conf.setMaxConnections(200);
// 设置Socket层传输数据的超时时间,默认为50000毫秒。
conf.setSocketTimeout(10000);
// 设置建立连接的超时时间,默认为50000毫秒。
conf.setConnectionTimeout(10000);
// 设置从连接池中获取连接的超时时间(单位:毫秒),默认不超时。
conf.setConnectionRequestTimeout(1000);
// 设置连接空闲超时时间。超时则关闭连接,默认为60000毫秒。
conf.setIdleConnectionTime(10000);
// 设置失败请求重试次数,默认为3次。
conf.setMaxErrorRetry(5);
// 设置是否支持将自定义域名作为Endpoint,默认支持。
conf.setSupportCname(true);
// 设置是否开启二级域名的访问方式,默认不开启。
conf.setSLDEnabled(true);
// 设置连接OSS所使用的协议(HTTP或HTTPS),默认为HTTP。
conf.setProtocol(Protocol.HTTP);
// 设置用户代理,指HTTP的User-Agent头,默认为aliyun-sdk-java。
conf.setUserAgent("aliyun-sdk-java");
// 设置代理服务器端口。
conf.setProxyHost("<yourProxyHost>");
// 设置代理服务器验证的用户名。
conf.setProxyUsername("<yourProxyUserName>");
// 设置代理服务器验证的密码。
conf.setProxyPassword("<yourProxyPassword>");
// 设置是否开启HTTP重定向,默认开启。
conf.setRedirectEnable(true);
// 设置是否开启SSL证书校验,默认开启。
conf.setVerifySSLEnable(true);

// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret, conf);

// 关闭OSSClient。
ossClient.shutdown();
重试策略
当请求出现异常时,根据请求类型不同,OSS将采取不同的默认重试策略。
当请求为POST类型时,默认不重试。
当请求为非POST类型,且满足以下任意一种情况时,OSS会根据默认重试策略进行重试,最大重试次数为3次。
当异常为ClientException时,错误码(errorCode)为ConnectionTimeout、SocketTimeout、ConnectionRefused、UnknownHost和SocketException。
当异常为OSSException时,返回InvalidResponse以外的错误码。
返回的状态码(statusCode)为500、502和503。
当默认重试策略不满足使用需求时,您可以通过ClientConfiguration配置类来自定义重试策略和最大重试次数,一般不建议自定义重试策略。自定义重试策略的示例如下:
// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
String endpoint = "yourEndpoint";
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";

// 创建ClientConfiguration。
// ClientConfiguration是OSSClient的配置类,可用于配置重试次数、自定义重试策略、连接超时等参数。
ClientConfiguration conf= new ClientConfiguration();
// 设置失败请求重试次数,默认值为3次。
conf.setMaxErrorRetry(5);
// 自定义重试策略,一般不建议设置。
// 假设TestRetryStrategy类为您自定义的重试策略,TestRetryStrategy类需要继承RetryStrategy。
conf.setRetryStrategy(new TestRetryStrategy());

// 创建OSSClient实例。
OSS ossClient=new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret, conf);

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

更多详细的就不一一赘述了,太多了,不想复制了

直接附上链接

 

阿里oss 上传文件 java_Endpoint_17

 导入依赖

阿里oss 上传文件 java_阿里oss 上传文件 java_18

 简单上传

 

阿里oss 上传文件 java_阿里oss 上传文件 java_19

 

阿里oss 上传文件 java_Endpoint_20

阿里oss 上传文件 java_API_21

 

保存文件即可

下面是代码

package org.javaboy.vhr.controller;import com.alibaba.druid.support.json.JSONUtils;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;
import org.javaboy.vhr.model.RespBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

@RestController
public class OssController {

    @Value("${accessKey.id:}")
    private String accessId;
    @Value("${accessKey.secret:}")
    private String secret;
    @Value("${bucketName:}")
    private String bucketName;
    @Value("${aliyun.endpoint:}")
    private String endpoint;

    @PostMapping("/oss/fileUpload")
    public RespBean ossFileUpload(@RequestParam("file") MultipartFile file) throws IOException {
        System.out.println(file);
        OSS client = new OSSClientBuilder().build(endpoint, accessId, secret);
        System.out.println(client);
        PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, file.getOriginalFilename(), file.getInputStream());
        PutObjectResult putObjectResult = client.putObject(putObjectRequest);
        String url = "https://vhr-xushuai.oss-cn-shanghai.aliyuncs.com/"+file.getOriginalFilename();
        if (client != null){
            client.shutdown();
        }
        return RespBean.ok(url);
    }

}