赞
踩
1, 进入OSS的控制台,在Bucket 管理列表中,可以查看到自己的Bucket 数量,如果已经有了,则不要创建。没有的话,跟着我下面来创建一个Bucket 。
2, 点击创建Bucket ,进入到Bucket基本信息填写表单中。
3, 基本信息填写
【Bucket名称】 可以随意取,最好跟自己的项目名称有关系的名称,避免后面创建的Bucket多了分不清楚。
【地域】 可以任意选择,可以根据自己所在区域进行选择。
【Endpoint】 默认不可修改的,这个后面编写接口的时候要用到。
【所属资源组】 可以不选择。
【存储类型】 自己学习用的话,选择“低频访问选择”就可以,如果是企业项目的话,最好选择标准存储。后面的归档类型,主要是存放后就基本不访问的情况。我们这里选择“低频访问选择”。
【HDFS服务】/【同城冗余存储】/【版本控制】 这些都可以不用开启。
【读写权限】 选择“公共读”就可以,写的时候,后端接口会进行身份认证校验的。
【服务端加密方式】/【实时日志查询】 都可以不开通。
点击确定创建Bucket。
在Bucket列表就会有一条:sdms-img。
在pom.xml文件中引入依赖
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.15.1</version>
</dependency>
在OSS存储对象首页概览中,最右侧中的常用入口有Access Key的入口。如果没有找到,或者在个人中心处的Access Key,也可以进入到Access Key设置页面。
点击进入Access Key,选择继续使用。
进入到Access Key列表页面,如果创建过Access Key,可以直接使用,无需创建。如果没有,点击创建,进行验证码创建即可。
创建成功后,就会有AccessKey ID和AccessKeySecret,后面需要用到。
这里建议提前保存ID 和 Secret后面可以直接使用,若关闭了需要重新使用验证码查看
OSS访问常量定义: 在进行文件上传的时候,需要身份的校验,因此我们需要把身份验证的相关信息,定义在配置文件中(yml/properties)。
这里主要用到的几个信息是:endpoint、accessKeyId、accessKeySecret、bucketName。
#配置阿里云oss
aliyun:
oss:
file:
end-point: oss-cn-shenzhen.aliyuncs.com
access-key-id: LTAI5tQbJtr
access-key-secret: YTAsNTr8
bucket-name: sdms
如果找不到【endpoint】信息,可以进入你自己【Bucket 列表】,点击Bucket 名称进入到Bucket 的详情页面。选择【概览】,进入页面,下面就会有。选择外网访问中的Endpoint
使用Value()注解,注入在配置文件中配的常量参数。
在filename文件中,拼接了文件目录字符串,文件目录以每日的格式进行存储。(可选,如果不设置目录的话,所有的图片对象都全部存储在根目录)
最后拼接图片访问的url,返回给前端,前端统一封装成实体类,提交给新增/更新的接口。
public interface IOssService {
public String uploadFile(MultipartFile file);
}
@Service public class OssServiceImpl implements IOssService{ @Value("${aliyun.oss.file.end-point}") String endpoint; @Value("${aliyun.oss.file.access-key-id}") String accessKeyId; @Value("${aliyun.oss.file.access-key-secret}") String accessKeySecret; @Value("${aliyun.oss.file.bucket-name}") String bucketName; @Override public String uploadFile(MultipartFile file) { String dir = DateTime.now().toString(); //获取文件名 String fileName = dir+"/"+file.getOriginalFilename(); //创建OSSClient实例 OSS ossClient = new OSSClientBuilder().build(endpoint,accessKeyId,accessKeySecret); try { //获得文件流 InputStream inputStream = file.getInputStream(); //创建putObject请求 ossClient.putObject(bucketName,fileName,inputStream); //返回拼接后oss访问路径 String url = "https://"+bucketName+"."+endpoint+"/"+fileName; return url; }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()); return null; }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()); return null; }catch (IOException e) { e.printStackTrace(); return null; }finally { if (ossClient != null) { ossClient.shutdown(); } } } }
在Controller层接收前端传过来的file,调用IOSSService,成功!
在OSS管理控制层查看是否上传成功
可以发现,我们已经成功上传至OSS,到这里OSS的简单上传就结束了。
写的都是很简单的东西,记录一下第一次简单实用阿里云的OSS对象存储,大家看看就好,别喷我!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。