最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

一、七牛云

七牛云簡介

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

七牛云對象存儲(chǔ) Kodo 是七牛云提供的高可靠、強(qiáng)安全、低成本、可擴(kuò)展的存儲(chǔ)服務(wù)。您可通過控制臺(tái)、API、SDK 等方式簡單快速地接入七牛存儲(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)注冊  七牛云

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

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

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

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

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

點(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('請上傳 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: {
        // 注意修改請求頭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)建配置對象
        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);
    }
    /**
     * 獲取令牌對象(服務(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java基于ServletContextListener實(shí)現(xiàn)UDP監(jiān)聽

    Java基于ServletContextListener實(shí)現(xiàn)UDP監(jiān)聽

    這篇文章主要介紹了Java基于ServletContextListener實(shí)現(xiàn)UDP監(jiān)聽,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Java輸入輸出流方式(文件的復(fù)制)

    Java輸入輸出流方式(文件的復(fù)制)

    Java中的輸入輸出流主要用于數(shù)據(jù)的讀取和寫入,在文件復(fù)制中,我們首先創(chuàng)建輸入流和輸出流對象,然后打開源文件和目標(biāo)文件,接著,通過循環(huán)讀取源文件中的數(shù)據(jù),并將其寫入目標(biāo)文件中,最后,關(guān)閉輸入輸出流以釋放資源
    2025-02-02
  • java之static關(guān)鍵字用法實(shí)例解析

    java之static關(guān)鍵字用法實(shí)例解析

    這篇文章主要介紹了java之static關(guān)鍵字用法實(shí)例解析,包括了static關(guān)鍵字的原理講解及用法分析,并附帶了實(shí)例說明,需要的朋友可以參考下
    2014-09-09
  • 淺談Java變量的初始化順序詳解

    淺談Java變量的初始化順序詳解

    本篇文章是對Java變量的初始化順序進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • elasticsearch的zenDiscovery和master選舉機(jī)制原理分析

    elasticsearch的zenDiscovery和master選舉機(jī)制原理分析

    這篇文章主要介紹了elasticsearch的zenDiscovery和master選舉機(jī)制原理分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • java實(shí)現(xiàn)隊(duì)列queue數(shù)據(jù)結(jié)構(gòu)詳解

    java實(shí)現(xiàn)隊(duì)列queue數(shù)據(jù)結(jié)構(gòu)詳解

    大家好,本篇文章主要講的是java實(shí)現(xiàn)隊(duì)列queue數(shù)據(jù)結(jié)構(gòu)詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • Spring?Cloud整合XXL-Job的示例代碼

    Spring?Cloud整合XXL-Job的示例代碼

    這篇文章主要介紹了springcloud整合xxl-job的示例代碼,主要分為四個(gè)過程,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • spring-boot-starter-web更換默認(rèn)Tomcat容器的方法

    spring-boot-starter-web更換默認(rèn)Tomcat容器的方法

    Spring Boot支持容器的自動(dòng)配置,默認(rèn)是Tomcat,當(dāng)然我們也是可以進(jìn)行修改的。下面小編給大家?guī)砹藄pring-boot-starter-web更換默認(rèn)Tomcat容器的方法,感興趣的朋友跟隨小編一起看看吧
    2019-04-04
  • springboot多文件上傳代碼實(shí)例及解析

    springboot多文件上傳代碼實(shí)例及解析

    這篇文章主要介紹了springboot多文件上傳代碼實(shí)例及解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Java泛型之上界下界通配符詳解

    Java泛型之上界下界通配符詳解

    這篇文章主要介紹了Java泛型之上界下界通配符詳解,學(xué)習(xí)使用泛型編程時(shí),更令人困惑的一個(gè)方面是確定何時(shí)使用上限有界通配符以及何時(shí)使用下限有界通配符。本文提供一些設(shè)計(jì)代碼時(shí)要遵循的一些準(zhǔn)則。,需要的朋友可以參考下
    2019-06-06

最新評論

辽源市| 城口县| 彭泽县| 固始县| 石狮市| 高雄市| 金塔县| 天水市| 西吉县| 文水县| 九龙坡区| 互助| 吴江市| 富裕县| 西安市| 阆中市| 肥城市| 遂溪县| 台安县| 桃园县| 阳信县| 泾源县| 青州市| 宝应县| 新乐市| 竹山县| 岳普湖县| 泰宁县| 台江县| 芮城县| 渭源县| 调兵山市| 合阳县| 丽水市| 红桥区| 夏津县| 宜宾县| 甘孜| 南陵县| 湘阴县| 资阳市|