700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 阿里云OSS文件上传存储和删除 获取文件外网访问路径

阿里云OSS文件上传存储和删除 获取文件外网访问路径

时间:2022-05-14 02:45:52

相关推荐

阿里云OSS文件上传存储和删除 获取文件外网访问路径

因为项目中需要存储的数据主要是图片数据,所以使用阿里云提供的OSS存储,性价比高,也很简便。(本文一步一步操作指导最后成功都有截图)

前提工作:

已经在oss创建了bucket,就是一个项目的意思。并且设置公共读,maven依赖搜索aliyun oss第一个添加到pom

准备好

endpoint。 在下图可以找到

accessKeyId 和accessKeySecret ,建议创建一个子账号,提供的id和secret比较安全,泄露了不会对服务器造成大的破坏。

先准备一张图片,等待上传。

正式开始

创建一个工程:这里有新maven工程文章

controller接受请求

@RequestMapping("uploadImg")@ResponseBodypublic ImgMessage uploadImg(@RequestParam(value = "file", required = false) MultipartFile imgFile){return testService.saveImg(imgFile);}

想要获得外网访问地址,阿里云是这么说的

所以来看service,拼接一下字符串返回就好了

public ImgMessage saveImg(MultipartFile file) {// 创建新实例AliOssClient client = new AliOssClient();// 连接需要的信息client.setAccessKeyId("你的AccessKeyId");client.setAccessKeySecret("你的AccessKeySecret");client.setEndpoint("你的Endpoint");// 返回的文件访问路径String url = "";try {//获取文件的原始名字String originalfileName = file.getOriginalFilename();// 按日期存储//String fileAddress = new Date().toString();//重新命名文件String suffix = originalfileName.substring(originalfileName.lastIndexOf(".") + 1);String fileName = new Date().getTime() + "-img." + suffix;// 获得文件流InputStream inputStream = file.getInputStream();// 上传到OSSclient.putObject("你的BucketName", "自定义路径/" + fileName, inputStream);url += "http://你的BucketName.你的Endpoint/自定义路径/" + fileName;System.out.println("下载url是:" + url);} catch (IOException e) {e.printStackTrace();}// 是否有可访问的地址if (url.length() < 2) {return new ImgMessage("fail", null);}HashMap<String, Object> data = new HashMap<String, Object>();data.put("image_src", url);return new ImgMessage("success", data);}

然后是用到的自定义消息和封装好的阿里云OSS操作类

ImgMessage

public class ImgMessage {private String status;private Map<String,Object> data;public ImgMessage(String status, Map<String, Object> data) {this.status = status;this.data = data;}public ImgMessage() {}public String getStatus() {return status;}public void setStatus(String status) {this.status = status;}public Map<String, Object> getData() {return data;}public void setData(Map<String, Object> data) {this.data = data;}}

AliOssClient

public class AliOssClient {private static final Logger LOGGER = LoggerFactory.getLogger(AliOssClient.class);private String accessKeyId;private String accessKeySecret;private String endpoint;public String getAccessKeyId() {return accessKeyId;}public void setAccessKeyId(String accessKeyId) {this.accessKeyId = accessKeyId;}public String getAccessKeySecret() {return accessKeySecret;}public void setAccessKeySecret(String accessKeySecret) {this.accessKeySecret = accessKeySecret;}public String getEndpoint() {return endpoint;}public void setEndpoint(String endpoint) {this.endpoint = endpoint;}/*** 上传某个Object** @param bucketName* @param bucketUrl* @param inputStream* @return*/public boolean putObject(String bucketName, String bucketUrl, InputStream inputStream) {OSSClient client = new OSSClient(this.endpoint, this.accessKeyId, this.accessKeySecret);try {// 上传Object.client.putObject(bucketName, bucketUrl, inputStream);} catch (Exception e) {e.printStackTrace();return false;} finally {client.shutdown();}return true;}/*** 删除某个Object** @param bucketName* @param bucketUrl* @return*/public boolean deleteObject(String bucketName, String bucketUrl) {OSSClient client = new OSSClient(this.endpoint, this.accessKeyId, this.accessKeySecret);try {// 删除Object.client.deleteObject(bucketName, bucketUrl);} catch (Exception e) {e.printStackTrace();return false;} finally {client.shutdown();}return true;}/*** 删除多个Object** @param bucketName* @param bucketUrls* @return*/public boolean deleteObjects(String bucketName, List<String> bucketUrls) {OSSClient client = new OSSClient(this.endpoint, this.accessKeyId, this.accessKeySecret);try {// 删除Object.DeleteObjectsResult deleteObjectsResult = client.deleteObjects(new DeleteObjectsRequest(bucketName).withKeys(bucketUrls));List<String> deletedObjects = deleteObjectsResult.getDeletedObjects();} catch (Exception e) {e.printStackTrace();return false;} finally {client.shutdown();}return true;}}

部署到本地服务器上

接下来就是测试

打开OSS控制台,可以看到文件为空

打开postman或者自己写一个前端页面上传图片,推荐postman开发测试好工具。

输入本地服务器访问路径,选择要上传的文件

点击Send按钮,看到本地服务器返回了上传成功之后的外网访问地址。

再看一下oss文件有没有更新

出现了新文件,最后用返回的地址访问一下 ,看是否是我们上传的图片

大功告成!

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