1. 准备工作:

一、首先登录阿里云OSS对象存储控制台创建一个Bucket作为你的存储空间。

二、创建Access Keyan按要求创建进行,这里的方法步骤我就不展现出来了,你们可以自行查询阿里云文档,这个获取值本身就不难。

重点:记下你的AccessKey IDAccessKey Secret以及你刚才创建的Buacket名字BucketName

2. 配置:

在pom里引入oss要用的依赖

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

在application.yml里面添加配置文件

# 定义的端口号
server:
port: 8080 aliyun:
oss:
#yourEndpoint填写Bucket所在地域对应的Endpoint,可在创建好的Bucket概况页查看。
endpoint: oss-cn-chengdu.aliyuncs.com # 以成都为例,Endpoint填写为https://oss-cn-chengdu.aliyuncs.com
#阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户
accessKeyId: ********** # 阿里云账号AccessKey里所对应的AccessKey ID
accessKeySecret: ********** # 阿里云账号AccessKey里所对应的AccessKey Secret
bucketName: ********** # OSS对象存储空间名

3. 详细代码:

第一步:创建一个service包,新建一个AliyunOssService.java

import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.util.Map; @Service
public interface AliyunOssService {
Map<String, Object> upload(MultipartFile file, String fileName);
}

第二步:在service包里创建一个impl包,新建一个AliyunOssServiceImpl.java

import com.system.demo.service.AliyunOssService;
import com.system.demo.util.FileUploadUtil;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map; @Service("aliyunOssService")
public class AliyunOssServiceImpl implements AliyunOssService { @Resource
private FileUploadUtil fileUploadUtil; @Override
public Map<String, Object> upload(MultipartFile file, String fileName){
//定义一个目录(这里的目录可根据自己实际情况自己拼接定义)
String path = "a"; //我这里就随便定义一个a文件夹
//拼接,这里将路径和文件名拼接在了一起
fileName = path + "/" +fileName;
Map<String, Object> map =new HashMap<>();
map.put("code", 200);
map.put("msg", "查询成功");
map.put("data", this.fileUploadUtil.upload(file, fileName));
return map;
} }

第三步:创建一个util包,新建一个FileUploadUtil.java

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.ObjectMetadata;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream; @Component
public class FileUploadUtil { @Value("${aliyun.oss.endpoint}")
private String endpoint; @Value("${aliyun.oss.accessKeyId}")
private String accessKeyId; @Value("${aliyun.oss.accessKeySecret}")
private String accessKeySecret; @Value("${aliyun.oss.bucketName}")
private String bucketName; public String upload(MultipartFile file, String fileName){
// 写入文件
try {
//获取上传的输入流
InputStream inputStream = file.getInputStream(); //设置访问地址是默认是预览图片
ObjectMetadata meta = new ObjectMetadata();
meta.setContentType("image/jpg"); // 创建OSSClient实例
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); /*
调用oss上传到阿里云对象存储oss----Bucket存储空间
第一个参数 bucket名称
第二个参数 文件名称
第三个参数 输入流
第四个参数 文件类型
*/
ossClient.putObject(bucketName, fileName, inputStream, meta); // 删除文件。如需删除文件夹,请将ObjectName设置为对应的文件夹名称。如果文件夹非空,则需要将文件夹下的所有object删除后才能删除该文件夹。
//ossClient.deleteObject(bucketName, "a/"); // 关闭OSSClient。
ossClient.shutdown(); //上传成功后获取文件路径
String url = "https://" + bucketName + "." + endpoint + "/"+ fileName;
return url;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}

第四步:定义接口创建一个controller包,新建一个FileUpload.java

import com.system.demo.service.impl.AliyunOssServiceImpl;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.util.Map; @RestController
@RequestMapping("oss")
public class FileUpload { @Resource
private AliyunOssServiceImpl aliyunOssServiceImpl; @RequestMapping(value = "fileoss", method = RequestMethod.POST)
public Map<String, Object> uploadOssFile(MultipartFile file, String fileName){
return this.aliyunOssServiceImpl.upload(file, fileName); }
}

4. 测试:

首先运行启动类,在Postman进行测试

选择请求方式:POST

请求路径:localhost:8080/oss/fileoss

选择Body-->form-data

-----第一列数据:KEY为file,选择类型为File,添加VALUE为自己想要上传的文件;

-----第二列数据:KEY为fileName,选择类型为Text,添加VALUE为的文件名

如下图:



添加完成后,点击send,发起请求,等待返回数据,返回的JSON格式中data所对应的地址,为该文件的预览地址。

同时,你也可在你的OSS里面查看你的文件。

SpringBoot整合阿里云OSS对象存储实现文件上传的更多相关文章

  1. OSS对象存储的文件上传、解冻、下载与查看

    上传文件 cp命令用于上传.下载.拷贝文件. # 语法 ./ossutil cp [-r] file_url cloud_url # 例如 ossutil64 cp -r /remote/closed ...

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

    1. 开发前准备 1.1 前置知识 java基础以及SpringBoot简单基础知识即可. 1.2 环境参数 开发工具:IDEA 基础环境:Maven+JDK8 所用技术:SpringBoot.lom ...

  3. iOS使用阿里云OSS对象存储 (SDK 2.1.1)

    最近项目中用到了阿里云OSS对象存储,用来存储APP中图片.音频等一些数据.但坑爹的阿里云居然在11月20日将SDK版本更新到了2.1.1,然而网上给出的教程都是1.*版本的(针对iOS),两个版本所 ...

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

    原 Java使用阿里云OSS对象存储上传图片 2017年03月27日 10:47:28 陌上桑花开花 阅读数 26804更多 分类专栏: 工作案例总结 版权声明:本文为博主原创文章,遵循CC 4.0 ...

  5. 阿里云Oss对象存储

    将文件保存到阿里云上. 1.添加对象存储OSS空间 (新建Bucket) 可以在阿里云后台对象存储里面添加,也可以通过api添加.添加之后设置权限. skd使用. 1安装 Aliyun.OSS.SDK ...

  6. C# .net Ueditor实现图片上传到阿里云OSS 对象存储

    在学习的时候,项目中需要实现在Ueditor编辑器中将图片上传到云储存中,老师演示的是上传到又拍云存储,既然看了一遍,直接照搬不算本事,咱们可以依葫芦画瓢自己来动手玩玩其它的云存储服务. 现在云计算产 ...

  7. PHP 上传文件至阿里云OSS对象存储

    简述 1.阿里云开通对象存储服务 OSS 并创建Bucket 2.下载PHP SDK至框架扩展目录,点我下载 3.码上code 阿里云操作 开通对象存储服务 OSS 创建 Bucket 配置Acces ...

  8. 阿里云负载均衡SLB的文件上传下载问题解决

    Nfs同步文件夹配置 问题描述 : javaweb应用部署到云服务器上时,当服务器配置了SLB负载均衡的时候,多台服务器就会造成文件上传下载获取不到文件的错误, 解决办法有:1.hdfs  2.搭建f ...

  9. 阿里云OSS对象存储 简单上传文件

    不得不说阿里云的命名比较让人摸不着头脑,开始以为是文件存储NAS,弄了半天什么文件系统,挂载点的搞不明白.后来才搞清楚原来 对象存储OSS才是我需要的. 其中EndPoint就是画红框的部分,但是要加 ...

随机推荐

  1. SVG 场馆图

    SVG 场馆图 https://www.infoq.cn/article/1BVg9VDSmqyHv3W3TeNH https://mp.weixin.qq.com/s/aNPAfJIHL14NFtL ...

  2. Spark在处理数据的时候,会将数据都加载到内存再做处理吗?

    对于Spark的初学者,往往会有一个疑问:Spark(如SparkRDD.SparkSQL)在处理数据的时候,会将数据都加载到内存再做处理吗? 很显然,答案是否定的! 对该问题产生疑问的根源还是对Sp ...

  3. Error: Actions must be plain objects. Use custom middleware for async actions.

    原本代码: import { SREACH_FOCUS, SREACH_BLUR } from "./actionType" export const searchFocus = ...

  4. 【随便写写】印象笔记,WordPress,CSDN 等 写博客的不同

    之前有的文章,写在了印象笔记里面,有的文章,写在了自己的WordPress博客里面,但是,感觉还是需要在主流平台分享一下文章的.就再次写写文章吧.(PS:公众号最重要的不是写作,而是排版) 说说几个这 ...

  5. HBase 数据存储结构

    在HBase中, 从逻辑上来讲数据大概就长这样: 单从图中的逻辑模型来看, HBase 和 MySQL 的区别就是: 将不同的列归属与同一个列族下 支持多版本数据 这看着感觉也没有那么太大的区别呀, ...

  6. Get和Post请求方式

    Get和Post是两种不同的类型的请求. 它们主要有3点不同. 1.get请求通过浏览器地址栏传递表单数据.post请求通过form data 传递数据,不会通过地址栏. 2.get请求安全性较低,p ...

  7. 剑指 Offer 09. 用两个栈实现队列 +java中栈和队列的使用

    剑指 Offer 09. 用两个栈实现队列 题目链接 class CQueue { private Stack<Integer> sta1; private Stack<Intege ...

  8. LeetCode-在受污染的二叉树中查找元素

    在受污染的二叉树中查找元素 LeetCode-1261 /** * 给出一个满足下述规则的二叉树: * root.val == 0 * 如果 treeNode.val == x 且 treeNode. ...

  9. LightOJ-1074(SPFA判负圈+Bellman-Ford算法)

    Extended Traffic LightOJ-1074 这题因为涉及到减法和三次方,所以可能会出现负圈. 这里使用的算法叫做SPFA算法,这个可以用来判负圈和求解最短路.Bellman-Ford算 ...

  10. CVE-2020-1938 -Tomcat-AJP任意文件读取/包含

    为什么这个漏洞被称作 Ghostcat(幽灵猫)? 这个漏洞影响全版本默认配置下的 Tomcat(在我们发现此漏洞的时候,确认其影响 Tomcat 9/8/7/6 全版本,而年代过于久远的更早的版本未 ...