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. image to cur (cursor icons)

    image to cur (cursor icons) mouse-cursor-pointer https://onlineconvertfree.com/convert-format/jpg-to ...

  2. Flutter ReorderableListView 可拖拽的列表

    import 'package:flutter/material.dart'; import 'dart:math' as math; void main() => runApp(MyApp() ...

  3. layui 时间插件laydate中动态设置改变min和max值

    <div class="layui-inline"> <label class="layui-form-label">申请时间</ ...

  4. C++算法代码——奖学金

    题目来自:http://218.5.5.242:9018/JudgeOnline/problem.php?id=1098 题目描述 某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学 ...

  5. Python爬虫_百度贴吧(title、url、image_url)

    本爬虫以百度贴吧为例,爬取某个贴吧的[所有发言]以及对应发言详情中的[图片链接] 涉及: request 发送请求获取响应 html 取消注释 通过xpath提取数据 数据保存 思路: 由于各贴吧发言 ...

  6. 处理ios键盘弹出按钮点击click失效

    用ontouchstart绑定事件即可,然后用 document.activeElement.blur();让键盘收起 this.value = value.replace(/\s/g, " ...

  7. vmware-install.pl 如何安装?

    首先在虚拟机上安装vnware-tools工具,如图(工具为vmware workstation):  成功   但是系统屏幕大小并没有适应虚拟机,所以下边这行提示很重要. 打开左侧边栏的VMware ...

  8. go语言-csp模型-并发通道

    [前言]go语言的并发机制以及它所使用的CSP并发模型 一.CSP并发模型 CSP模型是上个世纪七十年代提出的,用于描述两个独立的并发实体通过共享的通讯 channel(管道)进行通信的并发模型. C ...

  9. 后端程序员之路 13、使用KNN进行数字识别

    尝试一些用KNN来做数字识别,测试数据来自:MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris Burgesh ...

  10. Ch1-What is DAX?

    What is DAX? 数据分析表达式 (DAX) 是在 Analysis Services.Power BI 以及 Excel 中的 Power Pivot 使用的公式表达式语言.在第一版Powe ...