文件上传—阿里云OSS对象存储
目录
一、OSS简介
二、OSS基本使用
1. 注册账号
2. 基本配置
(1) 开通OSS
(2) 创建存储空间
(3) 修改权限
(4) 配置完成,上传一张图片,检验是否成功。
(5) 创建AccessKey
三、Java项目集成OSS
1. 导入依赖
2. Result.java代码:
3. 引入OSS上传文件工具类 AliOSSUtils.java
3. UploadController:
4. 使用postman对接口进行测试
一、OSS简介
阿里云的对象存储服务(Object Storage Service,简称OSS)提供了一个网络平台,用于数据的存储和访问。通过OSS,我们能够随时在网络上存储和检索包括文本、图像、音频和视频在内的多种非结构化数据文件。在OSS中,数据文件被作为对象存储于称作存储空间(bucket)的容器中。
以下是OSS支持的主要功能:
-
创建存储空间:用户可以创建一个或多个存储空间,并在每个存储空间中上传文件。
-
文件上传与管理:用户能够将文件上传至指定的存储空间,并进行相应的管理操作。
-
文件共享与下载:用户可以通过获取已上传文件的URL地址来实现文件的共享和下载。
-
设置访问权限:用户可以调整存储空间或文件的属性和元数据,以设定相应的访问权限。
-
管理控制台操作:用户可以在阿里云的管理控制台中执行OSS的基本和高级任务。
-
API调用:用户可以利用阿里云的开发工具包或直接通过RESTful API在应用程序中执行OSS的基本和高级操作。
二、OSS基本使用
1. 注册账号
打开 阿里云-计算,为了无法计算的价值,申请阿里云账号并完成实名认证
2. 基本配置
(1) 开通OSS
登录成功之后,点击右上角“控制台”

鼠标放在左上角三条横杠处,点击“对象存储”,打开OSS产品详情页面。在OSS产品详情页中的单击立即开通。

开通服务后,单击官网首页右上方菜单栏的控制台,进入阿里云管理控制台首页,然后单击左侧的对象存储OSS菜单进入 OSS管理控制台。
(2) 创建存储空间
新建Bucket,自定义名称,地域随便选,读写权限默认私有,创建完成后改为公共读。
按照图中选,其他默认就行,都是不开通或者关闭。

(3) 修改权限
完成创建之后,进入创建好的Bucket,点击左侧列表“权限控制”—“阻止公共访问”,关闭“阻止公共访问”,接下来按步骤走。

接下来,点击“读写权限”—“设置”,选择“公共读”,按步骤走即可。

(4) 配置完成,上传一张图片,检验是否成功。
“文件列表”—“上传文件”—“扫描文件” —选择一个文件 —“上传文件”


点击“详情”,进行下载


下载成功,则说明访问成功 !
(5) 创建AccessKey
鼠标移动到头像处,点击“AccessKey”。

点击“我确认...”—“继续使用”—“创建AccessKey”


继续使用即可。

创建完成就获得了AccessKey

三、Java项目集成OSS
参考官方文档:OSS Java SDK快速入门_对象存储(OSS)-阿里云帮助中心
1. 导入依赖
在Maven工程中使用OSS Java SDK,只需在pom.xml中加入相应依赖即可。以在<dependencies>中加入3.17.4版本的依赖为例:
<dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.17.4</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>
2. Result.java代码:
package com.qcby.model;public class Result<T> {private int code;private String message;private T data;private Result(int code, String message, T data) {this.code = code;this.message = message;this.data = data;}public static <T> Result<T> success(T data) {return new Result<>(200, "操作成功", data);}public static <T> Result<T> failure(int code, String message) {return new Result<>(code, message, null);}// Getters and Setterspublic int getCode() {return code;}public void setCode(int code) {this.code = code;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}public T getData() {return data;}public void setData(T data) {this.data = data;}
}
3. 引入OSS上传文件工具类 AliOSSUtils.java
package com.qcby.utils;import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
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;
import java.util.UUID;@Component
public class AliOSSUtils {private String endpoint = "自己的";private String accessKeyId = "自己的";private String accessKeySecret = "自己的";private String bucketName = "自己的";/*** 实现上传图片到OSS*/public String upload(MultipartFile multipartFile) throws IOException {// 获取上传的文件的输入流InputStream inputStream = multipartFile.getInputStream();// 避免文件覆盖String originalFilename = multipartFile.getOriginalFilename();String fileName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf("."));//上传文件到 OSSOSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);ossClient.putObject(bucketName, fileName, inputStream);//文件访问路径String url = endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/" + fileName;// 关闭ossClientossClient.shutdown();return url;// 把上传到oss的路径返回}
}
3. UploadController:
package com.qcby.controller;import com.qcby.model.Result;
import com.qcby.utils.AliOSSUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;@Controller
public class UploadController {@Autowiredprivate AliOSSUtils aliOSSUtils;@ResponseBody@RequestMapping("/upload")public Result upload(MultipartFile image) throws IOException {//调用阿里云OSS工具类,将上传上来的文件存入阿里云String url = aliOSSUtils.upload(image);//将图片上传完成后的url返回,用于浏览器回显展示return Result.success(url);}
}
4. 使用postman对接口进行测试
- 切换到 “Body”(正文)选项卡。
- 选择 “form-data” 作为正文类型。
- 在 “VALUE” 列中,使用选择文件按钮上传你想要测试的文件。


相关文章:
文件上传—阿里云OSS对象存储
目录 一、OSS简介 二、OSS基本使用 1. 注册账号 2. 基本配置 (1) 开通OSS (2) 创建存储空间 (3) 修改权限 (4) 配置完成,上传一张图片,检验是否成功。 (5) 创建AccessKey 三、Java项目集成OSS 1. 导入依赖 2. Result.java代码: …...
mybatis-plus超详细讲解
mybatis-plus (简化代码神器) 地址:https://mp.baomidou.com/ 目录 mybatis-plus 简介 特性 支持数据库 参与贡献 快速指南 1、创建数据库 mybatis_plus 2、导入相关的依赖 3、创建对应的文件夹 4、编写配置文件 5、编写代码 …...
【Linux】--- 进程的概念
【Linux】--- 进程的概念 一、进程概念二、PCB1.什么是PCB2.什么是task_struct(重点!)3.task_struct包含内容 三、task_struct内容详解1.查看进程(1)通过系统目录查看(2)通过ps命令查看…...
Unity NTPComponent应用, 实现一个无后端高效获取网络时间的组件
无后端高效获取网络时间的组件 废话不多说,直接上源码m_NowSerivceTime 一个基于你发行游戏地区的时间偏移, 比如北京时区就是 8, 巴西就是-3,美国就是-5using Newtonsoft.Json; 如果这里报错, 就说明项目没有 NewtonsoftJson插件…...
go语言使用zlib压缩[]byte
在Go语言中,可以使用compress/flate和compress/zlib包来实现对[]byte数据的Zlib压缩。下面是一个简单的示例,展示如何使用这些包来压缩一个字节切片: go package main import ( "bytes" "compress/zlib" "fmt"…...
Windows 配置 Tomcat环境
Windows配置Tomcat 1. 介绍 Tomcat是一个开源的、轻量级的Java应用服务器,在Java Web开发领域应用广泛。以下是关于它的详细介绍: 一、基本概念与背景 定义:Tomcat是Apache软件基金会(Apache Software Foundation)下…...
【python从入门到精通】-- 第六战:列表和元组
🌈 个人主页:白子寰 🔥 分类专栏:重生之我在学Linux,C打怪之路,python从入门到精通,数据结构,C语言,C语言题集👈 希望得到您的订阅和支持~ 💡 坚持…...
Python | 数据可视化中常见的4种标注及示例
在Python的数据可视化中,标注(Annotation)技术是一种非常有用的工具,它可以帮助用户更准确地解释图表中的数据和模式。在本文中,将带您了解使用Python实现数据可视化时应该了解的4种标注。 常见的标注方式 文本标注箭…...
LearnOpenGL学习(高级OpenGL -> 高级GLSL,几何着色器,实例化)
完整代码见:zaizai77/Cherno-OpenGL: OpenGL 小白学习之路 高级GLSL 内建变量 顶点着色器 gl_PointSoze : float 输出变量,用于控制渲染 GL_POINTS 型图元时,点的大小。可用于粒子系统。将其设置为 gl_Position.z 时,可以使点…...
Scala学习记录
dao --------> 数据访问 mode ------> 模型 service ---->业务逻辑 Main -------> UI:用户直接操作,调用Service 改造UI层:...
vue使用pdfh5.js插件,显示pdf文件白屏
pdfh5,展示文件白屏,无报错 实现效果图解决方法(降版本)排查问题过程发现问题查找问题根源1、代码写错了?2、预览文件流的问题?3、pdfh5插件更新了,我的依赖包没更新?4、真相大白 彩蛋 实现效果图 解决方法…...
docker login 出错 Error response from daemon
在自己的Linux服务器尝试登陆docker出错 输入完用户密码之后错误如下: 解决方案 1.打开daemo文件: vim/etc/docker/daemon.json 2.常用的国内Docker 镜像源地址 网易云 Docker 镜像:http://hub-mirror.c.163.com 百度云 Docker 镜像&#x…...
Web 身份认证 --- Session和JWT Token
Web 身份认证 --- Session和JWT Token 方法一: 通过使用Session进行身份认证方法二: 通过JWT token进行身份认证什么是JWTJWT完整流程JWT攻防JWT 如何退出登录JWT的续签 方法一: 通过使用Session进行身份认证 用户第一次请求服务器的时候,服务器根据用户提交的相关信…...
UE5制作倒计时功能
设置画布和文本 文本绑定 格式化时间 转到事件图表,计算时间,时间结束后面的事件可以按自己需求写 进入关卡蓝图,添加倒计时UI...
Linux去除注释和空行
平时查看某些配置文件的时,我们会发现有很多注释(如:"#"开头的行),中间还有很多空行,看起来非常费劲,所以在这里总结下如何去除注释和空行的方法。 举例说明 这里选个简单点的文件&a…...
Elasticsearch 7.x入门学习-Spring Data Elasticsearch框架
1 Spring Data框架 Spring Data 是一个用于简化数据库、非关系型数据库、索引库访问,并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快捷,并支持 map-reduce 框架和云计算数据服务。 Spring Data 可以极大的简化 JPA的写法,…...
网络层IP协议(TCP)
IP协议: 在了解IP协议之前,我们市面上看到的"路由器"其实就是工作在网络层。如下图: 那么网络层中的IP协议究竟是如何发送数据包的呢? IP报头: IP协议的报头是比较复杂的,作为程序猿只需要我们重…...
计算机视觉中的边缘检测算法
摘要: 本文全面深入地探讨了计算机视觉中的边缘检测算法。首先阐述了边缘检测的重要性及其在计算机视觉领域的基础地位,随后详细介绍了经典的边缘检测算法,包括基于梯度的 Sobel 算子算法、Canny 边缘检测算法等,深入剖析了它们的…...
js 常用扩展方法总结+应用
文章目录 js 常用扩展方法总结扩展方法应用选择大型项目 中扩展方法应用选择小型项目中 扩展应用 js 常用扩展方法总结 函数原型(prototype)扩展方法 介绍:在JavaScript中,通过修改函数的prototype属性可以为该函数创建的所有对象…...
数据结构---图(Graph)
图(Graph)是一种非常灵活且强大的数据结构,用于表示实体之间的复杂关系。在图结构中,数据由一组节点(或称为顶点)和连接这些节点的边组成。图可以用于表示社交网络、交通网络、网络路由等场景。 1. 基本概…...
Llama-3.2-3B优化指南:Ollama性能调优,让模型跑得更快更稳
Llama-3.2-3B优化指南:Ollama性能调优,让模型跑得更快更稳 1. 为什么需要优化Llama-3.2-3B? Llama-3.2-3B作为一款30亿参数的轻量级大语言模型,在消费级硬件上表现出色。但在实际部署中,很多用户会遇到性能瓶颈&…...
SAP-FICO LSMW实战:批量导入财务凭证与固定资产主数据(AS91)的完整指南
1. LSMW基础概念与适用场景 第一次接触LSMW这个工具时,我也被它复杂的界面吓到过。但用顺手后发现,这简直是SAP数据迁移的"瑞士军刀"。简单来说,LSMW(Legacy System Migration Workbench)是SAP系统内置的数…...
7天掌握黑苹果安装:国光OpenCore配置终极指南
7天掌握黑苹果安装:国光OpenCore配置终极指南 【免费下载链接】Hackintosh 国光的黑苹果安装教程:手把手教你配置 OpenCore 项目地址: https://gitcode.com/gh_mirrors/hac/Hackintosh 想用普通电脑体验macOS的流畅与优雅吗?国光的黑苹…...
2024电子数据取证实战:从手机取证到恶意APP逆向分析
1. 手机取证实战入门:从ADB到蓝牙MAC地址追踪 手机取证是电子数据取证中最常见的场景之一。去年我参与处理的一起案件中,嫌疑人通过恶意APP窃取了受害者通讯录,当时就是通过ADB连接记录锁定了关键证据。先说说ADB这个基础但极其重要的工具。 …...
微信聊天记录的数字档案馆:WeChatMsg实现数据永久保存与深度分析
微信聊天记录的数字档案馆:WeChatMsg实现数据永久保存与深度分析 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trendin…...
别再死记硬背了!用74HC系列CMOS芯片,手把手带你理解逻辑门电平与噪声容限
74HC系列CMOS芯片实战:从数据手册到面包板的逻辑门电平全解析 当你在深夜调试一块74HC04反相器搭建的振荡电路时,示波器上本该清晰的方波却出现了毛刺和畸变——这种场景对电子爱好者来说再熟悉不过。本文将以74HC系列CMOS芯片为核心,通过五…...
ESP32-S3玩转微雪2.8寸触摸屏:从零到LVGL的保姆级避坑指南(ESP-IDF 5.3)
ESP32-S3与微雪2.8寸触摸屏深度适配:LVGL全流程实战手册 刚拿到微雪2.8寸触摸屏开发板的开发者,往往既兴奋又忐忑——这块搭载ESP32-S3芯片、配备8M PSRAM的硬件平台,理论上能流畅运行LVGL图形库,但实际开发中总会遇到各种"坑…...
3个高效技巧:百度网盘秒传工具实现跨平台文件管理
3个高效技巧:百度网盘秒传工具实现跨平台文件管理 【免费下载链接】baidupan-rapidupload 百度网盘秒传链接转存/生成/转换 网页工具 (全平台可用) 项目地址: https://gitcode.com/gh_mirrors/bai/baidupan-rapidupload 在数字化时代,高效文件传输…...
我的实用设计模式之 关于Policy-based design在Windows Mobile网络连接管理的应用
Raw Data(原数据)使用不要的分析器(分析器使用不同的算法)分析出关心的Event(事件,对象,告警等等)。同时作为behavior模式之一,stragety模式也可以使用在 定义多个behavi…...
[iPhone USB网络共享]完全指南:从驱动故障到高效连接
[iPhone USB网络共享]完全指南:从驱动故障到高效连接 【免费下载链接】Apple-Mobile-Drivers-Installer Powershell script to easily install Apple USB and Mobile Device Ethernet (USB Tethering) drivers on Windows! 项目地址: https://gitcode.com/gh_mirr…...
