2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 使用阿里云对象存储OSS上传图片

使用阿里云对象存储OSS上传图片

时间:2021-12-18 12:41:46

相关推荐

使用阿里云对象存储OSS上传图片

1,登录阿里云官网,开通oss对象存储

管理控制台是我已经开通过了,没有开始这里是立即开通,直接开通即可

2,点击管理控制台进入,创建Bucket(类似jav中的包)

3,创建阿里云的密码AccessKey ID 和 AccessKey Secret

并且记住AccessKey ID 和 AccessKey Secret,待会需要使用

4,查看阿里云oss文件上传的api

5,编写java接口代码

5.1加入依赖

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

5.2配置文件

server.port=8002spring.application.name=service-ossspring.profiles.active=devaliyun.oss.file.endpoint=oss-cn-aliyun.oss.file.keyid=LTAI4GD8gqB3npnPsc81vKXyaliyun.oss.file.keysecret=gnh245WziZjzd8NG3nIi7CfQHcqlKGaliyun.oss.file.bucketname=edu-0220

5.3OssController

package com.atguigu.oss.controller;import monutils.Result;import com.atguigu.oss.service.OssService;import io.swagger.annotations.Api;import io.swagger.annotations.ApiOperation;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.CrossOrigin;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.multipart.MultipartFile;@RestController@RequestMapping("/oss/file")@Api(description="文件上传")public class OssController {@Autowiredprivate OssService ossService;//上传头像的方法@PostMapping@ApiOperation(value = "上传头像")public Result uploadOssFile(MultipartFile file) {//获取上传文件 MultipartFile//返回上传到oss的路径String url = ossService.uploadFileAvatar(file);return Result.ok().data("url",url);}}

5.4常量获取配置文件的值

package com.atguigu.oss.utils;import org.springframework.beans.factory.InitializingBean;import org.springframework.beans.factory.annotation.Value;import org.ponent;//当项目已启动,spring接口,spring加载之后,执行接口一个方法@Componentpublic class ConstantPropertiesUtils implements InitializingBean {//读取配置文件内容@Value("${aliyun.oss.file.endpoint}")private String endpoint;@Value("${aliyun.oss.file.keyid}")private String keyId;@Value("${aliyun.oss.file.keysecret}")private String keySecret;@Value("${aliyun.oss.file.bucketname}")private String bucketName;//定义公开静态常量public static String END_POIND;public static String ACCESS_KEY_ID;public static String ACCESS_KEY_SECRET;public static String BUCKET_NAME;@Overridepublic void afterPropertiesSet() throws Exception {END_POIND = endpoint;ACCESS_KEY_ID = keyId;ACCESS_KEY_SECRET = keySecret;BUCKET_NAME = bucketName;}}

5.5OssService

package com.atguigu.oss.service;import org.springframework.web.multipart.MultipartFile;public interface OssService {//上传头像到ossString uploadFileAvatar(MultipartFile file);}

5.6OssServiceImpl

package com.atguigu.oss.service.impl;import com.aliyun.oss.OSS;import com.aliyun.oss.OSSClientBuilder;import com.atguigu.oss.service.OssService;import com.atguigu.oss.utils.ConstantPropertiesUtils;import org.joda.time.DateTime;import org.springframework.stereotype.Service;import org.springframework.web.multipart.MultipartFile;import java.io.InputStream;import java.text.SimpleDateFormat;import java.util.Date;import java.util.UUID;@Servicepublic class OssServiceImpl implements OssService {//上传头像到oss@Overridepublic String uploadFileAvatar(MultipartFile file) {//工具类获取值String endpoint = ConstantPropertiesUtils.END_POIND;String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;String bucketName = ConstantPropertiesUtils.BUCKET_NAME;try {// 创建OSS实例。OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);//获取上传文件输入流InputStream inputStream = file.getInputStream();//获取文件名称String fileName = file.getOriginalFilename();//1 在文件名称里面添加随机唯一的值String uuid = UUID.randomUUID().toString().replaceAll("-","");//yuy76t5rew01.jpgfileName = uuid+fileName;//2 把文件按照日期进行分类//获取当前日期///02/20String datePath = new DateTime().toString("yyyy/MM/dd");//拼接///02/20/ewtqr313401.jpgfileName = datePath+"/"+fileName;//调用oss方法实现上传//第一个参数 Bucket名称//第二个参数 上传到oss文件路径和文件名称 aa/bb/1.jpg//第三个参数 上传文件输入流ossClient.putObject(bucketName,fileName , inputStream);// 关闭OSSClient。ossClient.shutdown();//把上传之后文件路径返回//需要把上传到阿里云oss路径手动拼接出来//https://edu-0220.oss-cn-/01.jpgString url = "https://"+bucketName+"."+endpoint+"/"+fileName;return url;}catch(Exception e) {e.printStackTrace();return null;}}}

5.7postman测试文件上传

注意:在文件名称加入了uuid是为了防止名称相同后面会覆盖前面的(不加上传相同的文件名称后面会覆盖前面的);uuid前面加入了时间格式,是为了用时间进行分组,在一个项目中会上传多个文件,这样可以根据上传时间分组

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。