Springboot集成阿里云OSS上传文件系统教程

下面我将介绍一个完整的Spring Boot集成阿里云OSS上传文件系统的完整攻略。

1. 引入依赖

我们首先需要在pom.xml文件中引入阿里云OSS的Java SDK依赖,如下所示:

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

2. 配置OSS信息

在application.yml(或application.properties)文件中配置阿里云OSS访问信息:

aliyun:
  oss:
    endpoint: oss-cn-hangzhou.aliyuncs.com # 阿里云OSS地域域名
    accessKeyId: <your-accessKeyId> # 阿里云OSS的accessKeyId
    accessKeySecret: <your-accessKeySecret> # 阿里云OSS的accessKeySecret
    bucketName: <your-bucketName> # 阿里云OSS的bucketName
    folder: <your-folder> # 存放上传文件的目录

3. 上传文件

使用Java SDK上传文件到阿里云OSS,示例代码如下:

@Service
public class OSSService {
    @Autowired
    private OSSClient ossClient;
    @Value("${aliyun.oss.bucketName}")
    private String bucketName;
    @Value("${aliyun.oss.folder}")
    private String folder;

    /**
     * 上传文件,返回文件在OSS的存储路径
     */
    public String upload(File file){
        // 生成唯一文件名
        String fileName = UUID.randomUUID().toString().replace("-", "");
        // 获取文件扩展名
        String extension = file.getName().substring(file.getName().lastIndexOf("."));
        // 拼接OSS文件名
        String ossName = folder + "/" + fileName + extension;
        try {
            // 创建上传请求
            PutObjectRequest request = new PutObjectRequest(bucketName,ossName,file);
            // 执行上传请求
            ossClient.putObject(request);
            // 返回文件的访问地址
            return "https://"+bucketName+"."+ossClient.getEndpoint().toString().replace("http://","").replace("https://","")+"/"+ossName;
        } catch (OSSException | ClientException e) {
            e.printStackTrace();
        }
        return null;
    }
}

4. 下载文件

使用Java SDK从阿里云OSS下载文件,示例代码如下:

@Service
public class OSSService {
    @Autowired
    private OSSClient ossClient;
    @Value("${aliyun.oss.bucketName}")
    private String bucketName;

    public byte[] download(String ossName){
        try {
            // 获取文件流
            OSSObject ossObject = ossClient.getObject(bucketName, ossName);
            InputStream inputStream = ossObject.getObjectContent();
            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            // 读取文件内容到内存中
            byte[] buffer = new byte[4096];
            int len;
            while ((len = inputStream.read(buffer, 0, buffer.length)) != -1) {
                byteArrayOutputStream.write(buffer, 0, len);
            }
            byteArrayOutputStream.flush();
            inputStream.close();
            byteArrayOutputStream.close();
            // 返回文件内容
            return byteArrayOutputStream.toByteArray();
        } catch (OSSException | ClientException | IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}

以上就是Spring Boot集成阿里云OSS上传文件系统的完整攻略。如果想要了解更多细节,请参考阿里云OSS官方文档。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Springboot集成阿里云OSS上传文件系统教程 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • 魅族flyme4.5.7固件下载 魅族flyme4.5.7稳定版固件下载地址

    魅族Flyme 4.5.7固件下载攻略 1. 确认设备型号和版本 在下载魅族Flyme 4.5.7固件之前,首先需要确认你的设备型号和当前的固件版本。这可以通过以下步骤完成: 打开手机设置菜单。 滚动到底部,找到“关于手机”或类似的选项。 在关于手机页面中,查找设备型号和当前固件版本号。 确保你的设备型号和当前固件版本与魅族Flyme 4.5.7固件的兼容性…

    other 2023年8月4日
    00
  • 一文搞懂Spring中Bean的生命周期

    一文搞懂Spring中Bean的生命周期 什么是Bean的生命周期 Bean生命周期指的是Bean对象从创建到销毁的整个过程。在Spring容器中,Bean的生命周期可以通过Spring提供的接口来管理和控制。 Bean的生命周期过程 Spring容器管理Bean实例的生命周期,其主要的生命周期过程分为以下8个阶段: 实例化Bean对象:Spring通过无参…

    other 2023年6月27日
    00
  • Spring AOP 创建代理对象详情

    以下是使用标准的Markdown格式文本,详细讲解Spring AOP创建代理对象的完整攻略: Spring AOP 创建代理对象 1. 定义目标类和目标方法 首先,需要定义一个目标类,该类包含需要被代理的方法。 示例代码: public class UserService { public void addUser(String username) { /…

    other 2023年10月15日
    00
  • python开发之websocket的使用示例

    Python开发之WebSocket的使用示例攻略 WebSocket是一种在单个TCP连接上进行全双工通信的协议,可以用于实现实时通信和数据传输。本文将介绍如何使用Python开发WebSocket应用程序,包括安装WebSocket库、编写WebSocket服务器和客户端代码、以及测试WebSocket应用程序。 1. 安装WebSocket库 Pyth…

    other 2023年5月8日
    00
  • 如何改变placeholder的样式

    如何改变placeholder的样式 在Web开发中,placeholder 用于在输入框中展示默认提示内容,比如搜索框中的“请输入关键字”。默认情况下,placeholder 的样式和输入框的文本样式一致,如果想要将其样式修改为特殊样式,则需要对其进行单独的样式设置。 下面是一些方法: 1.使用 ::placeholder 伪元素 ::placeholde…

    其他 2023年3月28日
    00
  • jQuery 禁止表单用户名、密码自动填充功能

    以下是详细讲解“jQuery 禁止表单用户名、密码自动填充功能”的完整攻略。 禁止表单自动填充的原因 表单自动填充功能可以帮助用户快捷地填写表单,但在一些场景下,比如登录表单、支付表单等安全性要求较高的表单中,自动填充功能会增加用户的信息泄露风险,因此有必要禁用这个功能。 禁用用户名、密码自动填充的方法 方法一:在HTML中添加autocomplete属性 …

    other 2023年6月27日
    00
  • you-get 多网站视频下载工具 非常方便

    you-get 多网站视频下载工具 非常方便 作为一个视频爱好者,相信不少人遇到过在各大视频网站看到喜欢的视频,却找不到下载链接或者需要下载特定格式的视频而苦恼。此时,我们可以使用一款叫做you-get的开源工具来避免这些问题。 you-get是一个类似wget的命令行下载器,但是它专门用于下载多种网站上的视频内容,包括但不限于YouTube、Bilibil…

    其他 2023年3月28日
    00
  • JS获取填报扩展单元格控件的值的解决办法

    下面我将详细讲解“JS获取填报扩展单元格控件的值的解决办法”的完整攻略。 一、背景 在填报扩展中,由于控件是动态生成的,我们需要使用JS来获取填报扩展单元格控件的值。 二、解决办法 1. 使用jQuery选择器获取控件值 我们可以使用jQuery选择器获取填报扩展单元格控件的值。如下所示: var value = $("input[name=’xx…

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部