Springboot集成阿里云对象存储oss-前端-后端完整实现

这篇具有很好参考价值的文章主要介绍了Springboot集成阿里云对象存储oss-前端-后端完整实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.注册阿里云并购买套餐流量包

Springboot集成阿里云对象存储oss-前端-后端完整实现

2.点击套餐买个流量包,5元半年40g,还挺便宜

Springboot集成阿里云对象存储oss-前端-后端完整实现 

 3.购买后进入管理控制台-点开对象存储oss

Springboot集成阿里云对象存储oss-前端-后端完整实现

4.点开bucket创建,我已经创建好了

Springboot集成阿里云对象存储oss-前端-后端完整实现 

 5.需要复制每个人的外网访问,这个到时候需要在springboot项目中配置

Springboot集成阿里云对象存储oss-前端-后端完整实现

 6.点击个人头像创建每个人自己的key

Springboot集成阿里云对象存储oss-前端-后端完整实现

 Springboot集成阿里云对象存储oss-前端-后端完整实现

 这一步至关重要,涉及到你是否能使用成功,创建成功后项目也需要用到key和密码,这是我个人的。

                                阿里云服务一切准备完成开始集成springboot

1.导入阿里云依赖

        <!-- 阿里云OSS文件上传开始 -->
        <!-- 阿里云 OSS -->
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.14.1</version>
        </dependency>
        <!--日期时间工具-->
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>2.10.14</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>
        <!-- 阿里云OSS文件上传结束 -->

        2.需要配置阿里云的相关配置,找到application.properties文件,这里需要配置个人的

               配置说明

#OSS配置
aliyun.oss.file.endpoint=设置外网访问连接
aliyun.oss.file.keyid=  Keyid
aliyun.oss.file.keysecret=  key密码
#bucket名称
aliyun.oss.file.bucketname=自己设置的buket名称

再次说明:外网访问连接在阿里云控制台->对象存储->Bucket列表->概念->复制地域节点

Springboot集成阿里云对象存储oss-前端-后端完整实现

 

3.在项目中创建实例类,不要忘了存入容器中,要和配置类得字段名一致

package com.laoyang.Config.Oss;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * @author:Kevin
 * @create: 2022-09-07 19:57
 * @Description:
 */
@Data
@Component
@ConfigurationProperties(prefix = "aliyun.oss.file")
public class OssProperties {
    private String endPoint;
    private String keyId;
    private String keySecret;
    private String bucketName;

}

4.业务层实现文件上传与删除

package com.laoyang.service;

import org.springframework.web.multipart.MultipartFile;

public interface FileService {
    /**
     * 文件上传
     * @param file 文件上传对象
     * @param module 文件夹名称
     * @return
     */
    String upload(MultipartFile file, String module);
    /**
     * 删除文件
     * @param url
     */
    void deleteFile(String url);
}

5.业务层的实现类

package com.laoyang.service.impl;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.laoyang.Config.Oss.OssProperties;
import com.laoyang.service.FileService;
import org.apache.commons.io.FilenameUtils;
import org.joda.time.DateTime;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;

/**
 * @author:Kevin
 * @create: 2022-09-07 20:00
 * @Description:
 */
@Service
@Transactional
public class FileServiceImpl implements FileService {
    /**
     * 文件上传
     */
    @Resource
    private OssProperties ossProperties;
    /**
     * 文件上传
     *
     * @param file 文件上传对象
     * @param module 文件夹名称
     * @return
     */
    @Override
    public String upload(MultipartFile file, String module) {
        //获取地域节点
        String endPoint = ossProperties.getEndPoint();
        //获取AccessKeyId
        String keyId = ossProperties.getKeyId();
        //获取AccessKeySecret
        String keySecret = ossProperties.getKeySecret();
        //获取BucketName
        String bucketName = ossProperties.getBucketName();
        try {
        //创建OSSClient实例
            OSS ossClient = new OSSClientBuilder().build(endPoint, keyId,
                    keySecret);
        //上传文件流
            InputStream inputStream = file.getInputStream();
        //获取旧名称
            String originalFilename = file.getOriginalFilename();
        //获取文件后缀名
            String extension = FilenameUtils.getExtension(originalFilename);
        //将文件名重命名
            String newFileName = UUID.randomUUID().toString()
                    .replace("-", "")+"."+extension;
        //使用当前日期进行分类管理
            String datePath = new DateTime().toString("yyyy/MM/dd");
        //构建文件名
            newFileName = module + "/" + datePath + "/" + newFileName;
        //调用OSS文件上传的方法
            ossClient.putObject(bucketName, newFileName, inputStream);
        //关闭OSSClient
            ossClient.shutdown();
        //返回文件地址
            return "https://"+bucketName+"."+endPoint+"/"+newFileName;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }


    /**
     * 删除文件
     * @param url
     */
    @Override
    public void deleteFile(String url) {
            //获取地域节点
        String endPoint = ossProperties.getEndPoint();
            //获取AccessKeyId
        String keyId = ossProperties.getKeyId();
            //获取AccessKeySecret
        String keySecret = ossProperties.getKeySecret();
            //获取BucketName
        String bucketName = ossProperties.getBucketName();
        try {
            //创建OSSClient实例
            OSS ossClient = new OSSClientBuilder().build(endPoint, keyId,
                    keySecret);
            //组装文件地址
            String host = "https://"+bucketName+"."+endPoint+"/";
            //获取文件名称
            String objectName = url.substring(host.length());
            //删除文件
            ossClient.deleteObject(bucketName,objectName);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

6.视图类

package com.laoyang.controller;

import com.laoyang.service.FileService;
import com.laoyang.utils.R;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;

/**
 * @author:Kevin
 * @create: 2022-09-07 20:07
 * @Description: 文书上传
 */
@RestController
@RequestMapping("/api/oss/file")
public class OSSController {

    @Resource
    private FileService fileService;
    /**
     * 文件上传
     * @param file
     * @param module
     * @return
     */
    @PostMapping("/upload")
    public R upload(MultipartFile file, String module){
        //返回上传到oss的路径
        String url = fileService.upload(file,module);
        return R.ok(url).message("文件上传成功");
    }
}

最后就是前端调用链接实现了,我用的是vue

        

            <!-- 用户头像 -->
            <el-form-item label="头像">
              <el-upload
                :show-file-list="false"
                :on-success="handleAvatarSuccess"
                :before-upload="beforeAvatarUpload"
                class="avatar-uploader"
                :data="uploadHeader"
                action="http://localhost:9090/api/oss/file/upload?module=avatar"
              >
                <img v-if="user.avatar" :src="user.avatar">
                <i v-else class="el-icon-plus avatar-uploader-icon"/>
              </el-upload>
            </el-form-item>

组件方法实现:

 /**
     * 上传成功回调
     * @param res
     * @param file
     */
    handleAvatarSuccess(res, file) {
      this.user.avatar = res.data
      // 强制重新渲染
      this.$forceUpdate()
    },
    /**
     * 上传校验
     * @param file
     * @returns {boolean}
     */
    beforeAvatarUpload(file) {
      const isJPG = file.type === 'image/jpeg'
      const isLt2M = file.size / 1024 / 1024 < 2
      if (!isJPG) {
        this.$message.error('上传头像图片只能是 JPG 格式!')
      }
      if (!isLt2M) {
        this.$message.error('上传头像图片大小不能超过 2MB!')
      }
      return isJPG && isLt2M
    },

祝大家一步成功!文章来源地址https://www.toymoban.com/news/detail-451617.html

到了这里,关于Springboot集成阿里云对象存储oss-前端-后端完整实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 阿里云-对象存储OSS

    大家好,我是 码赛客1024 ,今天我们一起来学习阿里云的对象存储服务OSS。 阿里云对象存储OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存储服务,提供99.9999999999%(12个9)的数据持久性,99.995%的数据可用性。多种存储类型供选择,全面优化存储成本。 简单

    2024年01月16日
    浏览(41)
  • 阿里云对象存储OSS使用

    对象存储服务(Object Storage Service,简称 OSS)为您提供基于网络的数据存取服务。使用 OSS,您可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种非结构化数据文件。 对象存储可以简单理解为用来存储图片、音频、视频等非结构化数据的数据池。相对于主

    2024年02月11日
    浏览(40)
  • 阿里云对象存储(OSS)服务

    阿里云对象存储(OSS)服务 引入依赖 这里 aliyun-oss-spring-boot-starter 中默认引入的 aliyun-java-sdk-core 是 3.4.0 版本,但是 aliyun-spring-boot-dependencies 中对 aliyun-java-sdk-core 版本管理为:4.5.0,会导致版本冲突 所以排除 aliyun-oss-spring-boot-starter 默认的 aliyun-java-sdk-core ,单独引入 4.5.0 版

    2024年01月25日
    浏览(34)
  • 2.阿里云对象存储OSS

            文件上传,是指将本地图片、视频、音频等文件上传到服务器上,可以供其他用户浏览或下载的过程。文件上传在项目中应用非常广泛,我们经常发抖音、发朋友圈都用到了文件上传功能。 实现文件上传服务,需要有存储的支持,解决方案有以下几种: 存储方式

    2024年02月12日
    浏览(39)
  • 阿里云对象存储OSS怎么收费?

    阿里云对象存储OSS收费有两种计费模式,即包年包月和按量付费,包年包月是指购买存储包、流量包来抵扣OSS产生的存储费核流量费,OSS标准(LRS)存储包100GB优惠价33元、500GB存储包半年162元、OSS存储包40GB一年9元,OSS流量包100G 49元/月,阿里云百科来详细说下阿里云对象存储

    2024年01月19日
    浏览(39)
  • 阿里云对象存储OSS文件上传

    阿里云oss地址: 对象存储OSS_云存储服务_企业数据管理_存储-阿里云 阿里云对象存储OSS是一款海量、安全、低成本、高可靠的云存储服务,提供12个9的数据持久性,99.995%的数据可用性和多种存储类型,适用于数据湖存储,数据迁移,企业数据管理,数据处理等多种场景,可对

    2024年02月12日
    浏览(32)
  • 阿里云oss对象存储的使用

    1.介绍 对象存储服务(Object Storage Service,OSS)是一种海量、安全、低成本、高可靠的云存储 服务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面优 化存储成本。 2.使用步骤   1)登录阿里云:https://www.aliyun.com   2)开通阿里云对象存储服

    2024年01月17日
    浏览(36)
  • 浅谈阿里云对象存储OSS

    OSS(即Object Storage Service)是一种提供海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本,官方一点解释就是对象存储是一种使用HTTP API存储和检索非结构化数据和元数据对象的工具。白

    2024年02月12日
    浏览(45)
  • 阿里云对象存储服务OSS前后联调

    申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址 全文共计11577字,阅读大概需要3分钟 在分布式集群系统中,前端通过浏览器上传图片给服务器存储时存在分库分表的情况,这就涉及到 文件存储 的情况,在高并发的情况下,考虑到服务器的性能和利用率

    2023年04月09日
    浏览(28)
  • 阿里云对象存储OSS学习笔记4

    存储类型介绍: 文件存储:NAS 文件存储、NFS。 块存储:SAN iSCSI: 硬盘通过IP的方式提供给其他设备使用。 对象存储:OSS、CUS:我们创建了一个存储池,我们的文件有文件本身、给文件生成元数据、文件唯一的ID。我们可以通过http和https来阅读。存储内容:内容不会变化的,例

    2024年02月06日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包