阿里云oss文件上传

分布式文件系统

分布式文件存储、

常用分布式文件存储,Fastdfs和GDFS 需要购买服务器进行额外的搭建成本较高。推荐使用阿里的oss降低学习的成本。

与此对应的还有搭建FTP服务器等。

开通oss服务

根据官网的提示开通oss服务。

创建Bucket

参考文档进行学习

使用springboot工程整合阿里云oss的sdk进行业务实现

创建springboot工程

新建一个名字为oss的模块

根据官网文档引入对应的maven依赖

<dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.10.2</version>
</dependency>
<dependencies><!--springboot的web启动器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--测试--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--阿里云oss--><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.10.2</version></dependency></dependencies>

编写oss文件上传业务类

通过业务类对接我们的文件上传

根据官网提供的快速入门的案例进行配置

public class Demo {public static void main(String[] args) throws Exception {// Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。关于其他Region对应的Endpoint信息,请参见访问域名和数据中心。String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。String accessKeyId = "yourAccessKeyId";String accessKeySecret = "yourAccessKeySecret";// 填写Bucket名称,例如examplebucket。String bucketName = "examplebucket";// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);try {// 创建存储空间。ossClient.createBucket(bucketName);} 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());} 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());} finally {if (ossClient != null) {ossClient.shutdown();}}}
}

查看控制台填写对应的配置信息


获取需要进行配置的密钥。


将获取到的公钥和私钥的信息,填写到对应的配置中完成编写。最后修改bucketname为自己要上传的bucketname的名字。

后端文件上传测试

先将上传的文件通过后端指定的路径进行上传,通过阿里云的控制台查看文件上传的效果。

package com.xiaoxu.demo.service;import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import org.springframework.web.multipart.MultipartFile;import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.UUID;/*** @Author ChenRuXu* @Date 2022/2/23 18:51* @Version 1.0*/public class OssUploadService {public static void main(String[] args) {OssUploadService ossUploadService = new OssUploadService();System.out.println(ossUploadService.upload(new File("d://a.txt")));}/*** oss文件上传实例* @param multipartFile* @return*/public String upload(File multipartFile){// Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。关于其他Region对应的Endpoint信息,请参见访问域名和数据中心。String endpoint = "https://oss-cn-qingdao.aliyuncs.com";// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。String accessKeyId = "LTAI5tMvrr9Pqy7xRnhvnVDd";String accessKeySecret = "sObq73X4KuSDlKoCVTey6C8z1NO6u9";// 填写Bucket名称,例如examplebucket。String bucketName = "chenruxuoss";// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);try {InputStream inputStream = new FileInputStream(multipartFile);//构建目录String path = "Txtest";//获取文件名String objectName = multipartFile.getName();String filename = UUID.randomUUID().toString();String suffix = objectName.substring(objectName.lastIndexOf("."));String newName = filename+suffix;String fileUrl = path +"/"+newName;ossClient.putObject(bucketName, fileUrl, inputStream);return "https://"+bucketName+"."+endpoint+"/"+fileUrl;} 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 "fail";} catch (Exception 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 "fail";} finally {if (ossClient != null) {ossClient.shutdown();}}}
}



在这个时候本地的txt文件成功的上传到了阿里云的oss上。

前端路径回显

结合前端使用模板引擎,上传图片将上传之后的图片进行图片的回显操作。
完成之后简单的oss文件上传业务完成。

前端与控制器断点测试

编写前端的文件上传页面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>文件上传操作</title>
</head>
<body><form action="/upload" method="post" enctype="multipart/form-data">选择文件<input type="file" id="file" name="name" multiple="multiple"><br>提交<input type="submit"></form>
</body>
</html>

编写对应的controller并在合适的位置打上断点进行接口测试。

引入模板引擎之后在前端进行页面的测试,

观察测试断点调试的结果,文件成功被接口接收。

业务类改写前端接口

@Autowiredprivate OssUploadService ossUploadService;@RequestMapping("/upload")@ResponseBodypublic String upload(@RequestParam("name")MultipartFile multipartFile){System.out.println("文件上传");//回显地址return  ossUploadService.upload(multipartFile);}

业务逻辑类改写

package com.xiaoxu.demo.service;import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.UUID;/*** @Author ChenRuXu* @Date 2022/2/23 18:51* @Version 1.0*/
@Service
public class OssUploadService {/*** oss文件上传实例* @param multipartFile* @return*/public String upload(MultipartFile multipartFile){// Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。关于其他Region对应的Endpoint信息,请参见访问域名和数据中心。String endpoint = "https://oss-cn-qingdao.aliyuncs.com";// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。String accessKeyId = "LTAI5tMvrr9Pqy7xRnhvnVDd";String accessKeySecret = "sObq73X4KuSDlKoCVTey6C8z1NO6u9";// 填写Bucket名称,例如examplebucket。String bucketName = "chenruxuoss";// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);try {InputStream inputStream = multipartFile.getInputStream();//构建目录String path = "Txtest";//获取文件名String objectName = multipartFile.getOriginalFilename();String filename = UUID.randomUUID().toString();String suffix = objectName.substring(objectName.lastIndexOf("."));String newName = filename+suffix;String fileUrl = path +"/"+newName;ossClient.putObject(bucketName, fileUrl, inputStream);return "https://"+bucketName+"."+endpoint+"/"+fileUrl;} 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 "fail";} catch (Exception 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 "fail";} finally {if (ossClient != null) {ossClient.shutdown();}}}
}

之后进行测试文件上传成功,但得到的回显地址存在问题需要进一步的完善

设置其为公共读写

设置其为公共读写此时可以通过浏览器实现默认的访问。也是我们完成前端读写操作的基础。

阿里云oss存储文件上传功能实现相关推荐

  1. 阿里云OSS文件上传下载,拿来即用

    什么是OSS 我们可以理解为就是一个资源服务器,在这之前我也尝试过Nginx当静态资源服务器,但效果比较一般,为什么选择阿里云OSS,只是因为最近刚好公司用到了,所以就接入了,还有其他的比如七牛云,腾 ...

  2. SpringBoot整合阿里云OSS文件上传、下载、查看、删除

    SpringBoot整合阿里云OSS文件上传.下载.查看.删除 该项目源码地址:https://github.com/ggb2312/springboot-integration-examples ( ...

  3. C#阿里云oss接口上传和下载文件

    一  前期准备工作:需要获取阿里云的:endpoint, accessKeyId, accessKeySecret这三个参数值,可以登录阿里云账号获取到. 再一个就是项目中需要引入阿里云的接口文件Al ...

  4. 阿里云 OSS监控上传进度

    阿里云 OSS监控上传进度 阿里云上传进度SDK 使用阿里云带进度条的上传,然后将长传进度存入session // 带进度条的上传ossClient.putObject(new PutObjectRe ...

  5. 解决阿里云oss文件上传部分MP4格式视频文件上传导致上传崩溃问题

    解决阿里云oss文件上传部分MP4格式视频文件上传导致上传崩溃问题 问题描述 java程序,使用阿里云oss文件上传服务,在测试时偶然发现,我用苹果手机开启高清进行摄像,将原图通过qq传到电脑上,在电 ...

  6. 阿里云oss文件上传工具类

    阿里云oss文件上传工具类 阿里云oss 阿里云oss 导入文件阿里云oss的maven依赖 <!-- 阿里云oss依赖 --><dependency><groupId& ...

  7. 阿里云oss视频上传后,如何获取视频封面

    前言:在阿里云oss视频上传后,我们如何获取视频封面呢?而不是通过上传方式获取封面.其实OSS本身提供了视频截帧功能 OSS提供的视频截帧功能和OSS图片服务功能使用的方式是类似的,都是通过传入x-o ...

  8. Java中阿里云OSS文件上传工具类

    阿里云OSS文件上传下载工具类 前言: 本质上就是获取配置文件信息,然后注入bean,调用sdk中提供的增删改方法: 为了避免同名文件会替换,用了hutool中唯一id生成+文件名做拼接 导入依赖:→ ...

  9. 谷粒学院(八)阿里云oss | 头像上传 | Nginx

    文章目录 一.阿里云oss存储服务 1.开通 "对象存储OSS"服务 2.进入oss管理控制台 3.Java代码操作阿里云oss上传文件 二.后端集成OSS 1.在service模 ...

最新文章

  1. LigerUI权限系统之组织结构
  2. python爬虫教程视频-13天搞定Python分布爬虫
  3. vue 打包路由报错_Vue下路由History模式打包后页面空白的解决方法
  4. 【debug】python3安装win32com模块
  5. 步进电机速度不够怎么办?
  6. c语言定积分的基本思想_积分的计算方法、技巧、思路总结~
  7. VS2017+AE10.2实现二次开发
  8. cat3 utp是不是网线_CAT网线品种分类
  9. 38. Python批量翻译英语单词
  10. Asp.Net MVC 实用视频教程
  11. 高三计算机教学计划,精选高三教学计划三篇
  12. 基于Spring Boot的个人博客系统的设计与实现 毕业设计-附源码271611
  13. 木兰词·拟古决绝词柬友(引用)
  14. Html 实现手风琴效果
  15. 使用SNMP检查服务器中运行的进程信息
  16. Jsp的四大作用域与九大对象
  17. 奥比中光 Astra pro 深度相机在ROS Melodic的调试
  18. 会员积分体系付费会员的运营优化方法
  19. MySQL执行成本是如何计算的?
  20. 强大的刻盘软件 Ashampoo Burning Studio 9.20 中文版 + 注册码下载

热门文章

  1. java图片下载工具_Java实现的有道云笔记图片批量下载工具
  2. 【Go语言开发】简单了解一下搜索引擎并用go写一个demo
  3. Python安全编程
  4. 使用python搞定<百度云盘> 视频限速/网页限制(我们就给他拿下来)
  5. MySQL原生SQL语句(基础)cmd 教你入门mysql
  6. shell stty命令
  7. 我眼中的信用评分模型
  8. 色彩搭配利器:最好用的配色工具App Top5
  9. 线性结构、树结构、图结构
  10. 个人对YY教育的一些雄心解读 教育真的好改变吗?