首页 > 编程语言 >Javaweb之SpringBootWeb案例之阿里云OSS服务集成的详细解析

Javaweb之SpringBootWeb案例之阿里云OSS服务集成的详细解析

时间:2024-09-16 19:51:24浏览次数:12  
标签:Javaweb url OSS SpringBootWeb import 上传 oss String


 2.3.3 集成

阿里云oss对象存储服务的准备工作以及入门程序我们都已经完成了,接下来我们就需要在案例当中集成oss对象存储服务,来存储和管理案例中上传的图片。

Javaweb之SpringBootWeb案例之阿里云OSS服务集成的详细解析_java

编辑

在新增员工的时候,上传员工的图像,而之所以需要上传员工的图像,是因为将来我们需要在系统页面当中访问并展示员工的图像。而要想完成这个操作,需要做两件事:

  1. 需要上传员工的图像,并把图像保存起来(存储到阿里云OSS)
  2. 访问员工图像(通过图像在阿里云OSS的存储地址访问图像)
  • OSS中的每一个文件都会分配一个访问的url,通过这个url就可以访问到存储在阿里云上的图片。所以需要把url返回给前端,这样前端就可以通过url获取到图像。

我们参照接口文档来开发文件上传功能:

  • 基本信息
请求路径:/upload

请求方式:POST

接口描述:上传图片接口
  • 请求参数
    参数格式:multipart/form-data
    参数说明:

参数名称

参数类型

是否必须

示例

备注

image

file


  • 响应数据
    参数格式:application/json
    参数说明:

参数名

类型

是否必须

备注

code

number

必须

响应码,1 代表成功,0 代表失败

msg

string

非必须

提示信息

data

object

非必须

返回的数据,上传图片的访问路径

响应数据样例:

{
    "code": 1,
    "msg": "success",
    "data": "https://web-framework.oss-cn-hangzhou.aliyuncs.com/2022-09-02-00-27-0400.jpg"
}

引入阿里云OSS上传文件工具类(由官方的示例代码改造而来)

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
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 = "https://oss-cn-shanghai.aliyuncs.com";
    private String accessKeyId = "LTAI5t9MZK8iq5T2Av5GLDxX";
    private String accessKeySecret = "C0IrHzKZGKqU8S7YQcevcotD3Zd5Tc";
    private String bucketName = "web-framework01";

    /**
     * 实现上传图片到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("."));

        //上传文件到 OSS
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        ossClient.putObject(bucketName, fileName, inputStream);

        //文件访问路径
        String url = endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/" + fileName;

        // 关闭ossClient
        ossClient.shutdown();
        return url;// 把上传到oss的路径返回
    }
}

修改UploadController代码:

import com.itheima.pojo.Result;
import com.itheima.utils.AliOSSUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;

@Slf4j
@RestController
public class UploadController {

    @Autowired
    private AliOSSUtils aliOSSUtils;

    @PostMapping("/upload")
    public Result upload(MultipartFile image) throws IOException {
        //调用阿里云OSS工具类,将上传上来的文件存入阿里云
        String url = aliOSSUtils.upload(image);
        //将图片上传完成后的url返回,用于浏览器回显展示
        return Result.success(url);
    }
    
}

使用postman测试:

Javaweb之SpringBootWeb案例之阿里云OSS服务集成的详细解析_上传_02

编辑



标签:Javaweb,url,OSS,SpringBootWeb,import,上传,oss,String
From: https://blog.51cto.com/u_16265376/12032161

相关文章

  • (CS231n课程笔记)深度学习之损失函数详解(SVM loss,Softmax,熵,交叉熵,KL散度)
    学完了线性分类,我们要开始对预测结果进行评估,进而优化权重w,提高预测精度,这就要用到损失函数。损失函数(LossFunction)是机器学习模型中的一个关键概念,用于衡量模型的预测结果与真实标签之间的差距。损失函数的目标是通过提供一个差距的度量,帮助模型进行优化,最终减少预测误差。......
  • 前后端分离Vue3+springboot基于javaweb学生宿舍入住报修管理系统
    目录功能和开发技术介绍具体实现截图开发核心技术介绍:系统运行步骤;技术创新点vue3和vue2的区别:开发环境和技术栈不分核心代码部分展示可行性分析系统设计操作可行性软件测试源码获取功能和开发技术介绍通过对相关类似系统项目的调查和研究,基本设计出本系统要实现的......
  • 软件设计之JavaWeb(3)
    软件设计之JavaWeb(3)此篇应在MySQL之后进行学习:路线图推荐:【Java学习路线-极速版】【Java架构师技术图谱】尚硅谷全新JavaWeb教程,企业主流javaweb技术栈资料可以去尚硅谷官网免费领取此章节最好学完JDBC观看学习内容:请求转发与响应重定向路径问题MVC架构模式1、......
  • Javaweb之SpringBootWeb案例之阿里云OSS服务入门的详细解析
     2.3.2入门阿里云oss对象存储服务的准备工作我们已经完成了,接下来我们就来完成第二步操作:参照官方所提供的sdk示例来编写入门程序。首先我们需要来打开阿里云OSS的官方文档,在官方文档中找到SDK的示例代码:编辑编辑编辑编辑参照官方提供的SDK,改造一下,即可实现文件上传功能:import......
  • 10个JavaWeb和JavaSE小项目:SSM、SpringBoot。毕设学习好模板。
    本仓列举了15个JavaWeb和JavaSE小项目:有SSM的、SpringBoot+Mybatis的、纯JavaSE+JavaFX的。对初学者非常友好,感兴趣的同学拿去学习。有问题请私信我。汽车租赁管理demo教务信息查询管理demo简易就业信息管理系统简易理财管理系统医院人事管理系统房屋租赁管理dem......
  • 【2025】javaweb教师工作量管理系统(源码+文档+调试+答疑)
    ......
  • 【附源码】超市管理系统(源码+数据库+毕业论文+答辩ppt齐全)java开发springboot框架vu
    ......
  • Javaweb之SpringBootWeb案例之阿里云OSS服务的详细解析
     2.3阿里云OSS2.3.1准备阿里云是阿里巴巴集团旗下全球领先的云计算公司,也是国内最大的云服务提供商。编辑云服务指的就是通过互联网对外提供的各种各样的服务,比如像:语音服务、短信服务、邮件服务、视频直播服务、文字识别服务、对象存储服务等等。当我们在项目开发时需要用到某......
  • abc370D Cross Explosion
    一开始并查集写的,ga掉。set应用一道非常好的题目。```#include<bits/stdc++.h>#include<set>#definesiiset<int>::iteratorusingnamespacestd;inth,w,q,ans;set<int>s1[400007],s2[400007];voiddel(intx,inty){//printf("%d%d\n",x,......
  • Tomcat_使用IDEA开发javaWeb工程并部署运用
    目录1.配置文件点击fileprojectStructure   配置SDK和languagelevel的语言版本一致。apply然后ok。2.然后点击web-all创建一个moudle叫做demo02-web02。 3.这仅仅是一个java的目录结构,我们需要把他转换成javaweb的结构。所以我们需要添加web资源组件。右击demo02-......