使用java代码把文件上传到阿里云对象存储OSS
一、创建对象存储OSS
为了解决海量数据存储与弹性扩容,项目中我们采用云存储的解决方案- 阿里云OSS。
1.开通“对象存储OSS”服务
(1)申请阿里云账号
(2)实名认证
(3)开通“对象存储OSS”服务
(4)进入管理控制台
2.创建Bucket
具体步骤
然后退出点击Acess Key 设置访问连接
添加完成后会出现如下信息
:AccessKey ID
:AccessKey Secret
如何使用
这点可以在阿里云帮助文档中找到:
1.创建maven项目引入如依赖
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.10.2</version>
</dependency>
然后在代码中调用
@Override
public String uploadFileAvatar(MultipartFile file) {
// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = ConstantPropertiesUtils.END_POINT;
// 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建。
String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;
String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;
String bucketName = ConstantPropertiesUtils.BUCKET_NAME;
try {
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 上传文件流。
InputStream inputStream = file.getInputStream();
//获取文件名称
String fileName = file.getOriginalFilename();
// 文件名称添加随机唯一值
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
fileName=uuid+fileName;
// 把文件按照日期分类
String dataPath = new DateTime().toString("yyyy/MMM/dd");
fileName = dataPath+"/"+fileName;
//调用oss方法实现上传
//第一个参数 Bucket名称
//第二个参数 上传到oss文件路径和文件名称
ossClient.putObject(bucketName, fileName, inputStream);
// 关闭OSSClient。
ossClient.shutdown();
//获取上传路径并返回
String url = "https://"+bucketName+"."+endpoint+"/"+fileName;
return url;
//文件默认不能大于1048576 bytes
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
附加错误信息
如果创建maven时运行启动类时出现如下错误:
这是没有找到数据库配置信息。
解决方案:
在启动类上加上(exclude = DataSourceAutoConfiguration.class)
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)```
版权声明:本文为Cui6023056原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。