欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot+vue實(shí)現(xiàn)七牛云頭像的上傳

 更新時(shí)間:2023年08月01日 09:48:03   作者:小新要努力變強(qiáng)  
本文將介紹如何在Spring Boot項(xiàng)目中利用七牛云進(jìn)行圖片上傳并將圖片存儲(chǔ)在云存儲(chǔ)中,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

做了個(gè)前后端分離的項(xiàng)目,對(duì)于用戶的頭像修改一直不是很滿意,

于是用了Vant4的組件庫改成了文件點(diǎn)擊上傳,先是打算存到本地,了解到七牛云的方便后(主要是免費(fèi)),決定改成七牛云存儲(chǔ)圖片,記錄一下操作,方便查看復(fù)習(xí)

一、七牛云

七牛云簡(jiǎn)介

七牛云是國內(nèi)領(lǐng)先的企業(yè)級(jí)公有云服務(wù)商,致力于打造以數(shù)據(jù)為核心的場(chǎng)景化PaaS服務(wù)。圍繞富媒體場(chǎng)景,七牛先后推出了對(duì)象存儲(chǔ),融合CDN加速,數(shù)據(jù)通用處理,內(nèi)容反垃圾服務(wù),以及直播云服務(wù)等。

七牛云對(duì)象存儲(chǔ) Kodo 是七牛云提供的高可靠、強(qiáng)安全、低成本、可擴(kuò)展的存儲(chǔ)服務(wù)。您可通過控制臺(tái)、API、SDK 等方式簡(jiǎn)單快速地接入七牛存儲(chǔ)服務(wù),實(shí)現(xiàn)海量數(shù)據(jù)的存儲(chǔ)和管理。通過 Kodo 可以進(jìn)行文件的上傳、下載和管理。

總的來說:七牛云是為開發(fā)服務(wù)的云存儲(chǔ)環(huán)境,可以在七牛云上托管靜態(tài)文件資源,并且進(jìn)行下載,還有很多七牛云的sdk。具體有關(guān)七牛云的介紹可以參考開發(fā)文檔:https://developer.qiniu.com/kodo 

七牛云使用

首先去官網(wǎng)注冊(cè)  七牛云

登錄注冊(cè)就不再說了,注冊(cè)完畢之后,點(diǎn)擊個(gè)人中心,進(jìn)行身份認(rèn)證

當(dāng)身份認(rèn)證完成之后,點(diǎn)左上角創(chuàng)建存儲(chǔ)空間,點(diǎn)這個(gè)對(duì)象存儲(chǔ)Kodo

 點(diǎn)擊空間管理,新建存儲(chǔ)空間,

讓你輸入空間名稱還有存儲(chǔ)區(qū)域以及訪問控制,按照要求填寫即可

現(xiàn)在就有了一個(gè)個(gè)人倉庫了,系統(tǒng)會(huì)給我們分配一個(gè)測(cè)試域名,不過這個(gè)域名只有30天有效期,我們可以先用這個(gè)域名進(jìn)行測(cè)試,后面來綁定自己的域名

點(diǎn)擊空間管理,進(jìn)入域名管理,即可以添加綁定域名

記住域名一定要是備案域名

二、前端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 根據(jù)文件后綴來判斷是否為圖片文件
  // 如果圖片 URL 中不包含類型信息,可以添加 isImage 標(biāo)記來聲明
]);
console.log(fileList)
const beforeRead = (file: any) => {
  console.log(file+'jpg')
  if (file.type !== 'image/jpeg') {
    Toast('請(qǐng)上傳 jpg 格式圖片');
    return false;
  }
  return true;
};
const afterRead = (file: any) => {
  // 返回圖片信息
  console.log(file);
  const ImgUploadFile = async (params: any) => {
    // 要把數(shù)據(jù)變成file格式
    const formData = new FormData(); // 下面有備注
    formData.append('file', params);
    console.log(formData)
    return await myAxios.post('/upload/img', formData, {
      headers: {
        // 注意修改請(qǐng)求頭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以及域名

七牛云的配置信息都可以在個(gè)人中心拿到,其中AK和SK:點(diǎn)擊密鑰管理

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 {
    /**
     * 存儲(chǔ)空間名
     */
    private static final String BUCKET = "空間名";
    /**
     * accessKey和secretKey
     */
    private static final String ACCESS_KEY = "AK";
    private static final String SECRET_KEY = "CK";
    /**
     * 外網(wǎng)訪問地址(內(nèi)置域名有效期只有30天)
     */
    private static final String BASE_URL = "域名+/";
    /**
     * 上傳管理器
     */
    private UploadManager upload;
    /**
     * 桶管理器(存儲(chǔ)空間管理器)
     */
    private BucketManager bucket;
    public QiniuOssUtils() {
        //創(chuàng)建配置對(duì)象
        Configuration cfg = new Configuration(Zone.zone2());
        //創(chuàng)建上傳管理器
        upload = new UploadManager(cfg);
        //創(chuàng)建存儲(chǔ)空間管理器
        bucket = new BucketManager(getAuth(), cfg);
    }
    /**
     * 返回認(rèn)證器(包含的訪問密鑰)
     *
     * @return
     */
    private Auth getAuth() {
        return Auth.create(ACCESS_KEY, SECRET_KEY);
    }
    /**
     * 獲取令牌對(duì)象(服務(wù)器返回的授權(quán)信息)
     *
     * @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);
        //解析返回結(jié)果
        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();
        }
    }
}

查看的話,可以在代碼中修改,將圖片路徑存儲(chǔ)到數(shù)據(jù)庫中,

查看時(shí)到數(shù)據(jù)庫中將路徑查詢出來,返給前端,前端拿到鏈接訪問即可。

最終效果是這樣

 我們也可以來看一下七牛云后臺(tái)管理的圖片信息

到此這篇關(guān)于springboot+vue實(shí)現(xiàn)七牛云頭像的上傳的文章就介紹到這了,更多相關(guān)springboot vue七牛云頭像上傳內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot整合Druid數(shù)據(jù)源的方法實(shí)現(xiàn)

    SpringBoot整合Druid數(shù)據(jù)源的方法實(shí)現(xiàn)

    Druid是阿里開發(fā)的一款開源的數(shù)據(jù)源,被很多人認(rèn)為是Java語言中最好的數(shù)據(jù)庫連接池,本文主要介紹了SpringBoot整合Druid數(shù)據(jù)源的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • java設(shè)計(jì)模式--建造者模式詳解

    java設(shè)計(jì)模式--建造者模式詳解

    這篇文章主要介紹了Java設(shè)計(jì)模式之建造者模式,結(jié)合具體實(shí)例形式分析了建造者模式的概念、原理、實(shí)現(xiàn)方法與相關(guān)使用注意事項(xiàng),需要的朋友可以參考下
    2021-07-07
  • Java?BigDecimal正確用法詳解

    Java?BigDecimal正確用法詳解

    Java在java.math包中提供的API類BigDecimal,用來對(duì)超過16位有效位的數(shù)進(jìn)行精確的運(yùn)算。雙精度浮點(diǎn)型變量double可以處理16位有效數(shù),但在實(shí)際應(yīng)用中,可能需要對(duì)更大或者更小的數(shù)進(jìn)行運(yùn)算和處理
    2022-10-10
  • MyBatis 實(shí)現(xiàn)批量插入和刪除中雙層循環(huán)的寫法案例

    MyBatis 實(shí)現(xiàn)批量插入和刪除中雙層循環(huán)的寫法案例

    這篇文章主要介紹了MyBatis 實(shí)現(xiàn)批量插入和刪除中雙層循環(huán)的寫法案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • SpringBoot 在IDEA中實(shí)現(xiàn)熱部署步驟詳解(實(shí)用版)

    SpringBoot 在IDEA中實(shí)現(xiàn)熱部署步驟詳解(實(shí)用版)

    這篇文章主要介紹了SpringBoot 在IDEA中實(shí)現(xiàn)熱部署步驟詳解(實(shí)用版),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-12-12
  • Mybatis 傳輸List的實(shí)現(xiàn)代碼

    Mybatis 傳輸List的實(shí)現(xiàn)代碼

    本文通過實(shí)例代碼給大家介紹了mybatis傳輸list的實(shí)現(xiàn)代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-09-09
  • Springboot?手動(dòng)分頁查詢分批批量插入數(shù)據(jù)的實(shí)現(xiàn)流程

    Springboot?手動(dòng)分頁查詢分批批量插入數(shù)據(jù)的實(shí)現(xiàn)流程

    這篇文章主要介紹了Springboot?手動(dòng)分頁查詢分批批量插入數(shù)據(jù)的實(shí)現(xiàn)流程,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • Mybatis-Plus實(shí)現(xiàn)自動(dòng)生成代碼的操作步驟

    Mybatis-Plus實(shí)現(xiàn)自動(dòng)生成代碼的操作步驟

    AutoGenerator 是 MyBatis-Plus 的代碼生成器,通過 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各個(gè)模塊的代碼,極大的提升了開發(fā)效率,本文將給大家介紹Mybatis-Plus實(shí)現(xiàn)自動(dòng)生成代碼的操作步驟
    2023-10-10
  • 帶你了解Java數(shù)據(jù)結(jié)構(gòu)和算法之遞歸

    帶你了解Java數(shù)據(jù)結(jié)構(gòu)和算法之遞歸

    這篇文章主要為大家介紹了Java數(shù)據(jù)結(jié)構(gòu)和算法之遞歸,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • 基于Java?Agent的premain方式實(shí)現(xiàn)方法耗時(shí)監(jiān)控問題

    基于Java?Agent的premain方式實(shí)現(xiàn)方法耗時(shí)監(jiān)控問題

    javaagent是在JDK5之后提供的新特性,也可以叫java代理,這篇文章主要介紹了基于Java?Agent的premain方式實(shí)現(xiàn)方法耗時(shí)監(jiān)控問題,需要的朋友可以參考下
    2022-10-10

最新評(píng)論