springboot+vue实现七牛云头像的上传

 更新时间:2023年08月01日 09:48:03   作者:小新要努力变强  
本文将介绍如何在Spring Boot项目中利用七牛云进行图片上传并将图片存储在云存储中,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

做了个前后端分离的项目,对于用户的头像修改一直不是很满意,

于是用了Vant4的组件库改成了文件点击上传,先是打算存到本地,了解到七牛云的方便后(主要是免费),决定改成七牛云存储图片,记录一下操作,方便查看复习

一、七牛云

七牛云简介

七牛云是国内领先的企业级公有云服务商,致力于打造以数据为核心的场景化PaaS服务。围绕富媒体场景,七牛先后推出了对象存储,融合CDN加速,数据通用处理,内容反垃圾服务,以及直播云服务等。

七牛云对象存储 Kodo 是七牛云提供的高可靠、强安全、低成本、可扩展的存储服务。您可通过控制台、API、SDK 等方式简单快速地接入七牛存储服务,实现海量数据的存储和管理。通过 Kodo 可以进行文件的上传、下载和管理。

总的来说:七牛云是为开发服务的云存储环境,可以在七牛云上托管静态文件资源,并且进行下载,还有很多七牛云的sdk。具体有关七牛云的介绍可以参考开发文档:https://developer.qiniu.com/kodo 

七牛云使用

首先去官网注册  七牛云

登录注册就不再说了,注册完毕之后,点击个人中心,进行身份认证

当身份认证完成之后,点左上角创建存储空间,点这个对象存储Kodo

 点击空间管理,新建存储空间,

让你输入空间名称还有存储区域以及访问控制,按照要求填写即可

现在就有了一个个人仓库了,系统会给我们分配一个测试域名,不过这个域名只有30天有效期,我们可以先用这个域名进行测试,后面来绑定自己的域名

点击空间管理,进入域名管理,即可以添加绑定域名

记住域名一定要是备案域名

二、前端vue配置

这里本人用的是vant4组件

<template>
 <van-uploader v-model="fileList"  :before-read="beforeRead" :after-read="afterRead"/>
</template>
<script setup lang="ts">
const fileList = ref([
  {url: editUser.value.currentValue, isImage: true},
  // Uploader 根据文件后缀来判断是否为图片文件
  // 如果图片 URL 中不包含类型信息,可以添加 isImage 标记来声明
]);
console.log(fileList)
const beforeRead = (file: any) => {
  console.log(file+'jpg')
  if (file.type !== 'image/jpeg') {
    Toast('请上传 jpg 格式图片');
    return false;
  }
  return true;
};
const afterRead = (file: any) => {
  // 返回图片信息
  console.log(file);
  const ImgUploadFile = async (params: any) => {
    // 要把数据变成file格式
    const formData = new FormData(); // 下面有备注
    formData.append('file', params);
    console.log(formData)
    return await myAxios.post('/upload/img', formData, {
      headers: {
        // 注意修改请求头file格式
        'Content-Type': 'multipart/form-data',
      },
    });
  };
  ImgUploadFile(file.file)
  editUser.value.currentValue =  "你自己的域名/"+ file.file.name;
}
</script>

三、后端springboot配置

.在pom.xml添加七牛云依赖

        <!--七牛云上传-->
        <dependency>
            <groupId>com.qiniu</groupId>
            <artifactId>qiniu-java-sdk</artifactId>
            <version>7.2.11</version>
        </dependency>
        <!-- 七牛云依赖Gson -->
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.6</version>
        </dependency>

controller层

@Controller
@RequestMapping("upload")
public class uploadimg {
    @PostMapping("/img")
    @ResponseBody
    public void up1img(@RequestParam(value = "file", required = false) MultipartFile file) throws IOException {
        if (file.isEmpty()) {
            return;
        }
        String fileName = file.getOriginalFilename();
        InputStream inputStream = file.getInputStream();
        QiniuOssUtils utils = new QiniuOssUtils();
        String upload = utils.upload(inputStream, fileName);
        System.out.println(upload);
    }
}

工具类方法,记得换成你自己的AK和CK以及域名

七牛云的配置信息都可以在个人中心拿到,其中AK和SK:点击密钥管理

import com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.common.Zone;
import com.qiniu.http.Response;
import com.qiniu.storage.BucketManager;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
/**
 * 七牛OSS管理工具
 */
public class QiniuOssUtils {
    /**
     * 存储空间名
     */
    private static final String BUCKET = "空间名";
    /**
     * accessKey和secretKey
     */
    private static final String ACCESS_KEY = "AK";
    private static final String SECRET_KEY = "CK";
    /**
     * 外网访问地址(内置域名有效期只有30天)
     */
    private static final String BASE_URL = "域名+/";
    /**
     * 上传管理器
     */
    private UploadManager upload;
    /**
     * 桶管理器(存储空间管理器)
     */
    private BucketManager bucket;
    public QiniuOssUtils() {
        //创建配置对象
        Configuration cfg = new Configuration(Zone.zone2());
        //创建上传管理器
        upload = new UploadManager(cfg);
        //创建存储空间管理器
        bucket = new BucketManager(getAuth(), cfg);
    }
    /**
     * 返回认证器(包含的访问密钥)
     *
     * @return
     */
    private Auth getAuth() {
        return Auth.create(ACCESS_KEY, SECRET_KEY);
    }
    /**
     * 获取令牌对象(服务器返回的授权信息)
     *
     * @return
     */
    private String getToken() {
        return getAuth().uploadToken(BUCKET);
    }
    /**
     * 文件上传
     *
     * @param file
     * @return
     */
    public String upload(File file, String key) {
        try {
            return upload(new FileInputStream(file), key);
        } catch (FileNotFoundException | QiniuException e) {
            e.printStackTrace();
        }
        return null;
    }
    /**
     * 上传文件
     *
     * @param is
     * @param key
     * @return
     * @throws QiniuException
     */
    public String upload(InputStream is, String key) throws QiniuException {
        //上传流
        Response response = upload.put(is, key, getToken(), null, null);
        //解析返回结果
        DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
        //将文件的访问地址返回
        return BASE_URL + putRet.key;
    }
    /**
     * 删除文件
     *
     * @param key
     */
    public void delete(String key) {
        try {
            bucket.delete(BUCKET, key);
        } catch (QiniuException e) {
            e.printStackTrace();
        }
    }
}

查看的话,可以在代码中修改,将图片路径存储到数据库中,

查看时到数据库中将路径查询出来,返给前端,前端拿到链接访问即可。

最终效果是这样

 我们也可以来看一下七牛云后台管理的图片信息

到此这篇关于springboot+vue实现七牛云头像的上传的文章就介绍到这了,更多相关springboot vue七牛云头像上传内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot整合Druid数据源的方法实现

    SpringBoot整合Druid数据源的方法实现

    Druid是阿里开发的一款开源的数据源,被很多人认为是Java语言中最好的数据库连接池,本文主要介绍了SpringBoot整合Druid数据源的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • java设计模式--建造者模式详解

    java设计模式--建造者模式详解

    这篇文章主要介绍了Java设计模式之建造者模式,结合具体实例形式分析了建造者模式的概念、原理、实现方法与相关使用注意事项,需要的朋友可以参考下
    2021-07-07
  • Java BigDecimal正确用法详解

    Java BigDecimal正确用法详解

    Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理
    2022-10-10
  • MyBatis 实现批量插入和删除中双层循环的写法案例

    MyBatis 实现批量插入和删除中双层循环的写法案例

    这篇文章主要介绍了MyBatis 实现批量插入和删除中双层循环的写法案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • SpringBoot 在IDEA中实现热部署步骤详解(实用版)

    SpringBoot 在IDEA中实现热部署步骤详解(实用版)

    这篇文章主要介绍了SpringBoot 在IDEA中实现热部署步骤详解(实用版),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • Mybatis 传输List的实现代码

    Mybatis 传输List的实现代码

    本文通过实例代码给大家介绍了mybatis传输list的实现代码,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-09-09
  • Springboot 手动分页查询分批批量插入数据的实现流程

    Springboot 手动分页查询分批批量插入数据的实现流程

    这篇文章主要介绍了Springboot 手动分页查询分批批量插入数据的实现流程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • Mybatis-Plus实现自动生成代码的操作步骤

    Mybatis-Plus实现自动生成代码的操作步骤

    AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率,本文将给大家介绍Mybatis-Plus实现自动生成代码的操作步骤
    2023-10-10
  • 带你了解Java数据结构和算法之递归

    带你了解Java数据结构和算法之递归

    这篇文章主要为大家介绍了Java数据结构和算法之递归,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • 基于Java Agent的premain方式实现方法耗时监控问题

    基于Java Agent的premain方式实现方法耗时监控问题

    javaagent是在JDK5之后提供的新特性,也可以叫java代理,这篇文章主要介绍了基于Java Agent的premain方式实现方法耗时监控问题,需要的朋友可以参考下
    2022-10-10

最新评论