java实现上传文件到oss
OSS(Object Storage Service)是阿里云提供的海量、安全、低成本、高可靠的云存储服务。它是面向Internet应用设计的分布式存储服务,支持RESTful API,可以在任何时间、任何地点、任何互联网设备上进行上传、下载、管理和分享数据稳定可靠:对象存储具有多重冗余架构设计;且基于高可用架构设计,消除单节点故障,跨数据中心的副本冗余,能够保障服务的高可用性,确保数据业务的持续
·
目录
一.简介和准备工作
1.1什么是oss
OSS(Object Storage Service)是阿里云提供的海量、安全、低成本、高可靠的云存储服务。它是面向Internet应用设计的分布式存储服务,支持RESTful API,可以在任何时间、任何地点、任何互联网设备上进行上传、下载、管理和分享数据
1.2准备环境
1.2.1 jar引入
准备新上传文件的开发环境--安装sdk, 这里就不详细介绍sdk安装了, 相信Java的小伙办都知道如何安装.
在Java项目中使用OSS,需要通过Maven引入OSS SDK。
以下是使用Maven添加依赖的示例:
<dependencies>
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>LATEST</version>
</dependency>
</dependencies>
1.2.2 yml配置文件配置
oss:
host: http://xxxx.oss-cn-shenzhen.aliyuncs.com
bucketName: xxxx-uxm
endpoint: oss-cn-shenzhen.aliyuncs.com
accessKeyId: xxxx6rZ7etOfxxx
accessKeySecret: xxxxxxxxxLc8NUoTTrmxxxxxxxxx
二.代码演示
2.1.上传本地文件到oss
public static void uploadFileToOSS() {
// Endpoint以"其他"为例,其它Region请按实际情况填写。
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// AccessKeyId和AccessKeySecret是OSS的访问密钥,可在阿里云控制台上创建和查看。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
String bucketName = "<yourBucketName>";
String objectName = "<yourObjectName>";
String filePath = "<yourLocalFilePath>";
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
try {
File file = new File(filePath);
// 上传文件流。
InputStream inputStream = new FileInputStream(file);
ossClient.putObject(bucketName, objectName, inputStream);
// 关闭OSSClient。
ossClient.shutdown();
System.out.println("文件上传成功!");
} catch (Exception e) {
e.printStackTrace();
}
}
2.2创建工具类上传
工具类:
* 上传文件
* @param file
* @return
*/
public Object upload(MultipartFile file) {
if (file.isEmpty()) {
throw new ServiceException("上传文件不能为空");
}
if (!checkFileSize(file.getSize(), BaseConstant.LEN, BaseConstant.UNIT_M)) {
throw new ServiceException("上传文件大小不能超过10M");
}
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 上传文件流。
// 保存路径,注意:这里不要以 / 或 \ 开头
String path = new SimpleDateFormat("yyyyMMdd").format(new Date());
String originalFilename = file.getOriginalFilename();
String fileName = path + "/" + UUID.randomUUID().toString().replace("-", "") + originalFilename.substring(originalFilename.lastIndexOf("."));
try {
ossClient.putObject(bucketName, fileName, file.getInputStream());
} catch (IOException e) {
throw new ServiceException("上传失败" + e.getMessage());
}
// 关闭OSSClient。
ossClient.shutdown();
return host + "/" + fileName;
}
三.总结
3.1 oss优点
- 稳定可靠:对象存储具有多重冗余架构设计;且基于高可用架构设计,消除单节点故障,跨数据中心的副本冗余,能够保障服务的高可用性,确保数据业务的持续性;
- 安全合规:支持服务端加密、客户端加密、防盗链、IP黑白名单、细粒度权限管控、日志审计、WORM特性,并获得多项合规认证,满足企业数据安全与合规要求;
3.2 oss缺点
oss法维护传统数据库。对象存储不能够按片段更改数据。只能修改整个对象,这在很大程度上会影响性能。
更多推荐
已为社区贡献5条内容
所有评论(0)