OSS简单文件上传和本地存储上传
网站的文件上传方法
本地存储上传
// 本地存储方式 MultipartFile接受文件
@PostMapping("/save")
public Result save(String username, Integer age, MultipartFile image) throws IOException {
log.info("文件:{}, {}, {}", username, age, image);
String or = image.getOriginalFilename();
// UUID.randomUUID()获取一个独一无二的文件名字 or.substring(or.indexOf(".")获取文件后缀名
String name = UUID.randomUUID().toString() + or.substring(or.indexOf("."));
// 存储的本地文件目录
image.transferTo(new File("E:/WYW/" + name));
return Result.success();
}
阿里云对象存储OSS实现文件上传
OOS
阿里云对象存储OSS(Object Storage Service)为您提供基于网络的数据存取服务。使用OSS,您可以通过网络随时存储和调用包括文本、图片、音视频在内的各类数据文件。
Maven注入依赖
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.15.1</version>
</dependency>
如果使用的是Java 9及以上的版本,则需要添加jaxb相关依赖。
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
<!-- no more than 2.3.3-->
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.3</version>
</dependency>
Controller层
@PostMapping("/upload")
public Result upload(MultipartFile image) throws IOException {
log.info("文件上传:{}", image.getOriginalFilename());
// 调用阿里云OSS工具类,将上传的文件上传到阿里云
String url = aliOSSUtils.upload(image);
// 封装 响应
return Result.success(url);
}
AliOSSUtils工具类
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.util.UUID;
/**
* 阿里云 OSS 工具类
*/
@Configuration
public class AliOSSUtils {
// Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
private String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
private String accessKeyId = "yourAccessKeyId";
private String accessKeySecret = "yourAccessKeySecret";
// 填写Bucket名称,例如examplebucket。
private String bucketName = "examplebucket";
/**
* 实现上传图片到OSS
*/
public String upload(MultipartFile file) throws IOException {
// 获取上传的文件的输入流
InputStream inputStream = file.getInputStream();
// 避免文件覆盖
String originalFilename = file.getOriginalFilename();
String fileName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf("."));
//上传文件到 OSS
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
ossClient.putObject(bucketName, fileName, inputStream);
//文件访问路径
String url = endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/" + fileName;
// 关闭ossClient
ossClient.shutdown();
return url;// 把上传到oss的路径返回
}
}
UploadController层完整代码
import com.wyw.tlias_w.pojo.Result;
import com.wyw.tlias_w.util.AliOSSUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
@Slf4j
@RestController
public class UploadController {
@Autowired
private AliOSSUtils aliOSSUtils;
// 本地存储方式 MultipartFile接受文件
// @PostMapping("/save")
// public Result save(String username, Integer age, MultipartFile image) throws IOException {
// log.info("文件:{}, {}, {}", username, age, image);
//
// String or = image.getOriginalFilename();
// // UUID.randomUUID()获取一个独一无二的文件名字 or.substring(or.indexOf(".")获取文件后缀名
// String name = UUID.randomUUID().toString() + or.substring(or.indexOf("."));
// // 存储的本地文件目录
// image.transferTo(new File("E:/WYW/" + name));
//
// return Result.success();
// }
@PostMapping("/upload")
public Result upload(MultipartFile image) throws IOException {
log.info("文件上传:{}", image.getOriginalFilename());
// 调用阿里云OSS工具类,将上传的文件上传到阿里云
String url = aliOSSUtils.upload(image);
System.out.println(url);
// 封装 响应
return Result.success(url);
}
}
转载:https://help.aliyun.com/document_detail/84781.html?spm=a2c4g.84778.0.0.1dfd70a8oq7Nd3
OSS简单文件上传和本地存储上传的更多相关文章
- Webstorm上已有的本地项目上传到Github
1.Webstorm左上角File —— Settings—— Github, Auth Type改成password,在Login和Password中输入自己的github账户和密码,点Test测试 ...
- RAC环境下误操作将数据文件添加到本地存储
今天碰到个有意思的事情,有客户在Oracle RAC环境,误操作将新增的数据文件直接创建到了其中一个节点的本地存储上. 发现网上去搜的话这种问题还真不少,对应解决方案也各式各样,客户问我选择哪种方案可 ...
- localStorage本地存储技术
localStorage 本地存储技术 本地存储技术,“不是永久的永久存储” 特点: 将数据存储到浏览器当中 存储的数据都是以字符串的形式存储的 和传统的数据库相比: 优点: 操作简单,容易学习 数据 ...
- 开扒本地存储—localStorage
.localStorage是什么狂点查看demo localStorage用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期 的. 2.localStorage有哪些优点 1). 存储空间 ...
- HTML5笔记:跨域通讯、多线程、本地存储和多图片上传技术
最近做项目在前端我使用了很多新技术,这些技术有bootstrap.angularjs,不过最让我兴奋的还是使用了HTML5的技术,今天我想总结一些HTML5的技术,好记性不如烂笔头,写写文章可以很好的 ...
- Web---文件上传-用apache的工具处理、打散目录、简单文件上传进度
我们需要先准备好2个apache的类: 上一个博客文章只讲了最简单的入门,现在来开始慢慢加深. 先过渡一下:只上传一个file项 index.jsp: <h2>用apache的工具处理文件 ...
- salesforce 零基础学习(四十二)简单文件上传下载
项目中,常常需要用到文件的上传和下载,上传和下载功能实际上是对Document对象进行insert和查询操作.本篇演示简单的文件上传和下载,理论上文件上传后应该将ID作为操作表的字段存储,这里只演示文 ...
- Git本地项目上传 & SourceTree & GitHub 简单使用
Git(分布式版本控制系统) Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理 ...
- 简单的Django实现图片上传,并存储进MySQL数据库 案例——小白
目标:通过网页上传一张图片到Django后台,后台接收并存储进数据库 真是不容易!!这个案例的代码网上太乱,不适合我,自己摸索着写,终于成功了,记录一下,仅供自己参考,有的解释可能不对,自己明白就好, ...
- Linux本地数据上传到阿里云OSS
这篇文章主要是介绍如何将服务器本地的数据上传到阿里云OSS的指定bucket中,最重要的参考文档是数据迁移单机部署.我第一次上传数据到OSS上时,步骤要比前面的链接中介绍的要麻烦,ossimport工 ...
随机推荐
- CF437E The Child and Polygon
The Child and Polygon 题解 这世界这么大,遇到了这个奇奇怪怪的题. 这道题其实可以很自然的联想到卡特兰数. 在卡特兰数的计数中,有这么一个意义:\(C_n\) 表示把有 \(n+ ...
- LeetCode 146. LRU CacheLRU缓存机制 (C++/Java)
题目: Design and implement a data structure for Least Recently Used (LRU) cache. It should support the ...
- 《Android开发卷——HTTP网络通信,HTTP网络连接》
为了访问互联网,需要设置应用程序获取"androd.permission.INTERNET"权限的许可. 一.使用Apache接口(org.apache.http)并实现网络连接的 ...
- js获取指定日期的前一天/后一天
date代表指定日期,格式:2018-09-27 day代表天数,-1代表前一天,1代表后一天 // date 代表指定的日期,格式:2018-09-27// day 传-1表始前一天,传1表始后一天 ...
- 妙用OSGraph:发掘GitHub知识图谱上的开源故事
1. 何为OSGraph? OSGraph (Open Source Graph) 是一个开源图谱关系洞察工具,基于GitHub开源数据全域图谱,实现开发者行为.项目社区生态的分析洞察.可以为开发者. ...
- vite+vue3+ts+elementPlus前端框架搭建 [二] pinia状态管理
前面已经完成了基本框架搭建,下一步针对各个模块的封装以及实验 本章主要是针对pinia的状态模块实现 1. 创建Store 在src文件夹下创建一个store的文件夹,并在该文件夹下创建index.t ...
- 【Java异常】Variable used in lambda expression should be final or effectively final
[Java异常]Variable used in lambda expression should be final or effectively final 从字面上来理解这句话,意思是:*lamb ...
- 零基础写框架(3): Serilog.NET 中的日志使用技巧
.NET 中的日志使用技巧 Serilog Serilog 是 .NET 社区中使用最广泛的日志框架,所以笔者使用一个小节单独讲解使用方法. 示例项目在 Demo2.Console 中. 创建一个控制 ...
- Ajax分析方法
Ajax 分析方法 以前面的微博为例,拖动刷新的内容由 Ajax 加载,而且页面的 URL 没有变化,那么应该到哪里去查看这些 Ajax 请求呢? 查看请求 需要借助浏览器的开发者工具,下面以 Chr ...
- pytest_fixture通过参数request获取测试数据,并在fixture方法里面使用
pytest fixture传参request的使用 获取request对pytest插件的版本有要求,如果找不到request报错的话, 建议先升级pytest的版本 要实现的效果 执行测试用例,调 ...