Springboot 搭建oss文件上传服务器
1.登录阿里云官网
https://www.aliyun.com/?spm=5176.8466032.top-nav.dlogo.724e1450B4jI0X
2.选择控制台
3. 找到对象存储oss
4.选择Bucket 列表
5.创建bucket列表
6.获取密钥,点击右上角的小人,选择accesskey管理
7.继续使用
8.查看密钥,获取验证码
9.复制保存密钥
以上步骤是配置和获取阿里云oss文件服务器的密钥
java代码
maven依赖
<!--OSS依赖包--> <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.10.2</version> </dependency>
Ossconfig配置类
@Configuration public class OssConfig {@Beanpublic OSS ossClient(){// Endpoint以成都为例。//创建对象存储的域名String endpoint = "创建对象存储的域名";//验证码获取的accessKeyIdString accessKeyId = "验证码获取的accessKeyId";//验证码获取的accessKeySecretString accessKeySecret = "验证码获取的accessKeySecret";// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);return ossClient;} }
查看创建对象存储的域名
1.在存储对象列表中点击对象存储名称
2.选择概览,复制外网访问后面的域名
controller
@RestController public class OccController {@Autowiredprivate OSS ossClient;@PostMapping("/uploadImg")public AjaxResult uploadImg(MultipartFile file) throws IOException {System.out.println(file);//获取文件后缀名String originalFilename = file.getOriginalFilename();int i = originalFilename.lastIndexOf(".");String png = originalFilename.substring(i);//存储空间的名字String bucketName = "thk1030";//生成新的文件名 brand/:在bucketName里面创建的分组String fileName = "itsource/" + UUID.randomUUID().toString().substring(0, 4) + png;// 上传文件到指定的存储空间(bucketName)并将其保存为指定的文件名称(fileName)。ossClient.putObject(bucketName, fileName, file.getInputStream());//文件访问地址。String url = "https://" + bucketName + ".oss-cn-chengdu.aliyuncs.com" + "/" + fileName;System.out.println("上传成功返回的:" + url);// 关闭OSSClient。ossClient.shutdown();return AjaxResult.success(url);} }
存储空间的名字
1.Bucket 列表中的Bucket 名称
postman测试上传
1.选择post请求,输入url地址
2.body里面选择form-data
3.输入file,选择file文件格式
4.选择上传图片
5.点击send
6.看一下阿里云列表
7.用在html页面上
在resources下面新建一个文件夹static,在static新建一个html5页面,将返回的url放在img标签里面
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>首页</title> </head> <body> <h1>图片</h1> <img src="https://thk1030.oss-cn-chengdu.aliyuncs.com/itsource/c617.gif" width="200" height="200"/></body> </html>
8.页面展示
浏览器输入localhost:9527/index.html
总结:
避坑:在上传一次图片或者视频之后,马上再次上传就会出现异常
经过测试,启动项目,第一次上传图片可以成功,重启项目,再次上传也可以成功,相当于无限循环第一次上传
原因
开始想过是第一次上传图片没有关闭流的原因,结果不是,
其实是因为注解的原因:@Bean 在ossconfig中,配置了这个@Bean,它默认是单例的,相当于第一次可以创建成功,第二次就创建不了,这样在第二次上传的时候,这个@Bean是失效的,没有ossconfig配置类,就会报出异常
解决方法:
在ossconfig的方法上加上注解:
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
@Configuration @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) public class OssConfig {@Bean @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)public OSS ossClient() {return new OSSClientBuilder().build(OssConstant.endpoint, OssConstant.accessKeyId, OssConstant.accessKeySecret);} }
类和方法都需要加上,配置类加了controller当然也要加上
@RestController @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) public class OccController {@Autowiredprivate OSS ossClient;@PostMapping("/uploadImg")public AjaxResult uploadImg(MultipartFile file) throws IOExceptiontry {System.out.println(file);//获取文件后缀名String originalFilename = file.getOriginalFilename();int i = originalFilename.lastIndexOf(".");String png = originalFilename.substring(i);//存储空间的名字String bucketName = "thk1030";//生成新的文件名 brand/:在bucketName里面创建的分组String fileName = "itsource/" + UUID.randomUUID().toString().substring(0, 4) + png;// 上传文件到指定的存储空间(bucketName)并将其保存为指定的文件名称(fileName)。ossClient.putObject(bucketName, fileName, file.getInputStream());//文件访问地址。String url = "https://" + bucketName + ".oss-cn-chengdu.aliyuncs.com" + "/" + fileName;System.out.println("上传成功返回的:" + url);return new AjaxResult(HttpStatus.SUCCESS, "操作成功", url);} catch (Exception e) {e.printStackTrace();return null;} finally {// 关闭OSSClient。ossClient.shutdown();}} }
问题解决!,以上就是搭建一个简单的oss文件上传服务器,没什么难度,可以参考一下!
Springboot 搭建oss文件上传服务器相关推荐
- 本地文件上传服务器node插件,node 搭建本地文件上传服务器
一直想尝试使用node搭建个文件服务器,今天简单写了一下,后面会慢慢完善,一起学习哈 首先,我们在做文件上传的时候,很多时候会使用到文件服务器. 从前端来说的话, 我们把数据上传到文件服务器上,然后文 ...
- SpringBoot整合阿里云OSS文件上传、下载、查看、删除
SpringBoot整合阿里云OSS文件上传.下载.查看.删除 该项目源码地址:https://github.com/ggb2312/springboot-integration-examples ( ...
- 轻松搞定阿里OSS文件上传和图片下载
轻松搞定阿里OSS文件上传和图片下载 目录 1. 阿里云oss账号准备 1.1 注册阿里云账号,并开通OSS存储服务 1.2 创建RAM子用户并使用子账户的AccessKeyId和Access ...
- js 导出pdf上传至oss_js实现oss文件上传及一些问题
关于兼容性问题,ie8以下的可以使用4.x的版本 一.引入sdk和jq 二.基本配置 var client =newOSS.Wrapper({ region:'', accessKeyId:'', a ...
- 大文件上传服务器、支持超大文件HTTP断点续传实践总结
点击关注公众号,实用技术文章及时了解 来源:blog.csdn.net/ababab12345/ article/details/80490621 最近由于笔者所在的研发集团产品需要,需要支持高性能的 ...
- 基于阿里云的OSS文件上传和下载
OSS概述 OSS是基于阿里云的一个云平台文件保存的系统,我们可以将服务器的文件上传至云端从而减轻服务器的压力. 初体验 首先创建一个bucket (给你的云储存器配置名字等基本信息) 生成Asses ...
- OSS文件上传(页面直传)
[前言] 近段时间在写一个文件上传的小功能,,公司的老项目实际已经有上传功能,,但是经理说在上传大文件的时候失败几率很大,,于是就仔仔细细的看了下老系统的文件上传的写法,在看了其写法之后决定重新整理一 ...
- Java中阿里云OSS文件上传工具类
阿里云OSS文件上传下载工具类 前言: 本质上就是获取配置文件信息,然后注入bean,调用sdk中提供的增删改方法: 为了避免同名文件会替换,用了hutool中唯一id生成+文件名做拼接 导入依赖:→ ...
- 阿里云OSS文件上传下载,拿来即用
什么是OSS 我们可以理解为就是一个资源服务器,在这之前我也尝试过Nginx当静态资源服务器,但效果比较一般,为什么选择阿里云OSS,只是因为最近刚好公司用到了,所以就接入了,还有其他的比如七牛云,腾 ...
最新文章
- 九度oj 题目1354:和为S的连续正数序列
- 在js对象上绑定js数组原生方法
- C# Image 、 byte[] 、Bitmap之间的转化
- Android开发之添加QQ群的方法(官方代码)
- 深度学习之循环神经网络(2)循环神经网络原理
- 抱歉,请不要把 “业务逻辑层” 理解为 “业务中台”
- linux看系统硬件,Linux 查看系统硬件信息(实例详解)
- mysql导入dat文件_MySql导入和抽取大数量级文件数据
- STM32 初学不知道外设对应的APB1还是APB2
- 华为鸿蒙系统明年8月份,华为鸿蒙系统明年上线,力争第五大操作系统,能否成功?...
- 实时计算-多级订单金额,及下级人数
- java 获取键盘点击_Java中获取键盘输入值的三种方法介绍
- linux 查看网站目录权限,解决SELinux对网站目录权限控制的不当的问题
- 一个html页面最多写多少代码,在多个页面使用同一个HTML片段的代码
- JAVA后端开发常用的Linux命令总结
- 微信小程序:实现按钮点击事件
- matlab已知上三角实现对角矩阵,MATLAB及其应用考试卷B卷2010-2011
- win7计算机管理没有键盘,win7系统中出现键盘无法输入的详细解决步骤
- VC++利用微软msxml3.dll创建xml文件
- [翻译Joel On Software]Joel测试:12步写出更高质量代码/The Joel Test: 12 Steps to Better Code
热门文章
- wireshark抓组播数据_wireshark过滤?wireshark 看端口号?wireshark组播包?WireShark 过滤语法...
- 9.Java SE 集合
- win7计算机服务项,新萝卜家园win7旗舰版服务项的详解
- 密码 加盐处理 是什么
- 第四章 账号权限管理
- 造人先于造物——松下幸之助的人才观
- e1000网卡驱动第二天_3
- 考研政治与专业课总结(持续更新)
- ie浏览器不能能上网,但火狐等浏览器可以
- linux php-fpm配置,php-fpm配置