springboot+vue實(shí)現(xiàn)七牛云頭像的上傳
做了個(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)文章
SpringBoot整合Druid數(shù)據(jù)源的方法實(shí)現(xiàn)
Druid是阿里開發(fā)的一款開源的數(shù)據(jù)源,被很多人認(rèn)為是Java語言中最好的數(shù)據(jù)庫連接池,本文主要介紹了SpringBoot整合Druid數(shù)據(jù)源的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
MyBatis 實(shí)現(xiàn)批量插入和刪除中雙層循環(huán)的寫法案例
這篇文章主要介紹了MyBatis 實(shí)現(xiàn)批量插入和刪除中雙層循環(huán)的寫法案例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01
SpringBoot 在IDEA中實(shí)現(xiàn)熱部署步驟詳解(實(shí)用版)
這篇文章主要介紹了SpringBoot 在IDEA中實(shí)現(xiàn)熱部署步驟詳解(實(shí)用版),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-12-12
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)流程,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07
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)和算法之遞歸,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-01-01
基于Java?Agent的premain方式實(shí)現(xiàn)方法耗時(shí)監(jiān)控問題
javaagent是在JDK5之后提供的新特性,也可以叫java代理,這篇文章主要介紹了基于Java?Agent的premain方式實(shí)現(xiàn)方法耗時(shí)監(jiān)控問題,需要的朋友可以參考下2022-10-10

