1.首先注册登陆阿里云,在产品里找到oss服务
2.点击开通oss服务后,可以看到oss服务面板
3.创建一个Bucket文件存储桶
Bucket 相当于 dir =bbs/avatar 用作文件隔离
4.java对接oss服务
找到java SDK
5.导入SDK的依赖
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.15.1</version>
</dependency>
如果使用的是Java 9及以上的版本,则需要添加jaxb相关依赖。添加jaxb相关依赖示例代码如下:
<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>
6.快速入门
以下代码用于通过流式上传的方式将文件上传到OSS。
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import java.io.ByteArrayInputStream;
public class Demo {
public static void main(String[] args) throws Exception {
// Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";
// 填写Bucket名称,例如examplebucket。
String bucketName = "examplebucket";
// 填写Object完整路径,例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。
String objectName = "exampledir/exampleobject.txt";
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
try {
String content = "Hello OSS";
ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(content.getBytes()));
} catch (OSSException oe) {
System.out.println("Caught an OSSException, which means your request made it to OSS, "
+ "but was rejected with an error response for some reason.");
System.out.println("Error Message:" + oe.getErrorMessage());
System.out.println("Error Code:" + oe.getErrorCode());
System.out.println("Request ID:" + oe.getRequestId());
System.out.println("Host ID:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Caught an ClientException, which means the client encountered "
+ "a serious internal problem while trying to communicate with OSS, "
+ "such as not being able to access the network.");
System.out.println("Error Message:" + ce.getMessage());
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}
修改参数 endpoint
AccessKey的获取
bucketName 桶的名字
完整代码文章来源:https://www.toymoban.com/news/detail-454854.html
package com.kuangstuday.service;
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.CannedAccessControlList;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;
@Service
public class OssUploadService {
public String uploadFile(MultipartFile multipartFile,String dir){
// Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
String endpoint = "oss-cn-nanjing.aliyuncs.com";
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
String accessKeyId = "LTAI5tBuEp1F3BqpGA5ELVps";
String accessKeySecret = "ETARTjSEcGQju9M7n8fP6nSaIY86CD";
// 填写Bucket名称,例如examplebucket。
String bucketName = "qianbaid";
// 创建OSSClient实例。
OSS ossClient = null;
try {
ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
//如果同不存在,创建桶
if (! ossClient.doesBucketExist(bucketName)){
//创建bucket
ossClient.createBucket(bucketName);
//设置oss实例的访问权限:公共
ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);
}
//2.获取文件上传流
InputStream inputStream = multipartFile.getInputStream();
//3.构建日期目录
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
String datePath = dateFormat.format(new Date());
//4.获取文件名
String originname = multipartFile.getOriginalFilename();
String filename = UUID.randomUUID().toString();
String suffix = originname.substring(originname.lastIndexOf("."));
String newName = filename + suffix;
String fileUrl = dir + "/"+ datePath+"/"+newName;
//5.文件上传阿里云服务器
ossClient.putObject(bucketName, fileUrl, inputStream);
return "https://"+bucketName+"."+endpoint+"/"+fileUrl;
} catch (Exception e) {
e.printStackTrace();
return "oss fail";
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}
注意 通过文件URL访问图片时,默认是下载行为。如需确保通过文件URL访问图片时是预览行为,您需要绑定自定义域名并添加CNAME记录。具体操作,请参见绑定自定义域名。文章来源地址https://www.toymoban.com/news/detail-454854.html
到了这里,关于文件上传对接阿里云OSS的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!