1. 准备工作:

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

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

重点:记下你的AccessKey ID、AccessKey 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. vue mixin执行覆盖

    https://cn.vuejs.org/v2/guide/mixins.html 完整代码 vue-option-overwrite-strategies vue 自带的mixin如果钩子函数重复会 ...

  2. WEB 用视频替换GIF动画

    原文 download ffmpeg gif to video 转化后文件大小大大降低 $ ffmpeg -i my-animation.gif -b:v 0 -crf 25 -f mp4 -vcod ...

  3. Java ThreadPoolExecutor详解

    ThreadPoolExecutor是Java语言对于线程池的实现.池化技术是一种复用资源,减少开销的技术.线程是操作系统的资源,线程的创建与调度由操作系统负责,线程的创建与调度都要耗费大量的资源,其 ...

  4. 自关联映射:一个表自己关联自己,此时从同一个表中查询,通过起别名将一张表变成两张表,使用join语句。

    实例1:id自关联. 隐式内连接: 实例二:编写一个 SQL 查询,来查找与之前(昨天的)日期相比温度更高的所有日期的 id .返回结果 不要求顺序 . 查询结果格式如下例: Weather +--- ...

  5. CentOS7安装ZooKeeper3.4.14

    1:下载安装包 wget https://downloads.apache.org/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz 点击进入官网下 ...

  6. Charles 抓取https 包

    1.  Recording Settings中 include 添加 host , port端口为443 2.  SSL Proxying Settings 选中 Enable SSL Proxyin ...

  7. 【Android笔记】Thread类中关于join()方法的源码分析

    1.join()方法的作用: 例如有一个线程对象为Thread1,在main()方法中调用Thread1.join()方法可使得当前线程(即主线程)阻塞,而执行Thread1线程. 2.源码分析(以上 ...

  8. Spark性能调优-RDD算子调优篇(深度好文,面试常问,建议收藏)

    RDD算子调优 不废话,直接进入正题! 1. RDD复用 在对RDD进行算子时,要避免相同的算子和计算逻辑之下对RDD进行重复的计算,如下图所示: 对上图中的RDD计算架构进行修改,得到如下图所示的优 ...

  9. git的工作管理和基础操作

    git的工作管理和基础操作 在本地创建git仓库管理我们的代码 初次使用git,先在本地配置一些基础信息 $ git config -l $ git config --global user.name ...

  10. EmEditor, 在正则使用()匹配后 使用$1 $2进行对括号内的值进行引用

    $1表示第一个括号,$2表示第二个括号,以此类推