七牛雲物件儲存
七牛雲物件儲存
在實際開發中,遇到檔案上傳、下載這是無可避免的,但是檔案上傳到本地,就佔用本地資源,這樣就會影響效能,所有可以把檔案上傳到指定伺服器,這裡就可以使用七牛雲物件儲存,把圖片視訊儲存到七牛雲,需要使用就使用外鏈地址直接可以訪問
開始
這兩處需要記錄一下,在後面開發需要使用
參考官方檔案進行開發檔案上傳
https://developer.qiniu.com/kodo/sdk/1239/java#1
安裝
使用Maven,jar包版本去7.4.0~7.4.99之間的,比如:7.4.0取不到就區7.4.1依次往後
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>[7.4.0, 7.4.99]</version>
</dependency>
鑑權
鍵查金鑰管理是否有,參考第一張圖片
檔案上傳
在第一張圖片中指定了金鑰、地區,在實現檔案上傳的時候就需要指定地區了,地區分為華東、華北、華南、北美、東南亞
機房 | Region |
---|---|
華東 | Region.region0() , Region.huadong() |
華北 | Region.region1() , Region.huabei() |
華南 | Region.region2() , Region.huanan() |
北美 | Region.regionNa0() , Region.beimei() |
東南亞 | Region.regionAs0() , Region.xinjiapo() |
- 若不指定
Region
或Region.autoRegion()
,則會使用 自動判斷 區域,使用相應域名處理。
編寫檔案上傳工具類
application.properties
qiniuyun.accessKey=
qiniuyun.secretKey=
#設定物件儲存名稱
qiniuyun.bucket=storage-images-sunweijie
#圖片外鏈地址字首,用於顯示圖片
qiniuyun.OuterChain=http://qll7sx8y9.hn-bkt.clouddn.com/
工具類:
package com.swj.util;
import com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.Region;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.io.InputStream;
import java.util.UUID;
/**
* 檔案上傳工具類
*/
@Component
@org.springframework.context.annotation.Configuration
public class UploadFileUtil {
@Value("${qiniuyun.accessKey}")
private String accessKey;
@Value("${qiniuyun.secretKey}")
private String secretKey;
@Value("${qiniuyun.bucket}")
private String bucket;
@Value("${qiniuyun.OuterChain}")
private String OuterChain;
/**
* 上傳檔案並且返回檔案地址
*
* @param inputStream 檔案
*/
public void setUploadManager(InputStream inputStream) {
//設定金鑰、檔案連線、檔名等等屬性
//構造一個帶指定 Region 物件的配置類
Configuration cfg = new Configuration(Region.huanan());
//...其他引數參考類註釋
UploadManager uploadManager = new UploadManager(cfg);
//設定連線地址
Auth auth = Auth.create(accessKey, secretKey);
String prefix = "";
int Guid = 100;
try {
String s = auth.uploadToken(bucket);
//生成檔名
String s1 = UUID.randomUUID().toString();
//實現檔案上傳
Response response = uploadManager.put(inputStream, s1, s, null, null);
//解析上傳成功結果
DefaultPutRet defaultPutRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
System.out.println("檔案外鏈地址:" + OuterChain + defaultPutRet.key);
System.out.println("defaultPutRet.hash = " + defaultPutRet.hash);
} catch (QiniuException e) {
System.out.println("e.getMessage() = " + e.getMessage());
e.printStackTrace();
}
}
}
Controller
package com.swj.controller;
import com.swj.util.UpdateFileUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
@Controller
public class uploadController {
@Autowired
private UploadFileUtil upload;
//跳轉到index
@GetMapping("/")
public String getIndex() {
return "index";
}
@PostMapping("/upload")
public void upload(@RequestParam("file") MultipartFile file, HttpServletRequest request, HttpServletResponse response) {
//獲取檔名
String originalFilename = file.getOriginalFilename();
String endName = originalFilename.split("\\.")[1];
String name = endName.toLowerCase();
//判斷是否是指定類
List<String> fileType = Arrays.asList("gif", "jpg", "jfif", "ico", "png", "bmp", "svg");
if (!fileType.contains(name)) {
System.out.println("檔案型別錯誤");
}
//檔名
try {
upload.setUploadManager(file.getInputStream());
System.out.println(" 檔案上傳成功 ");
} catch (IOException e) {
System.out.println(" 檔案上傳失敗 ");
e.printStackTrace();
}
}
}
html頁面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file" id="">
<input type="submit" value="新增">
</form>
<img src="http://qll7sx8y9.hn-bkt.clouddn.com/0b17dfce-5840-4f5c-8d52-627d8e12eb45"
style="width: 500px;height: 400px;"
alt="">
</body>
</html>
總結:這些在官方文件中都是有寫的,我們可以根據一下程式碼自己編寫一個工具類:https://developer.qiniu.com/kodo/sdk/1239/java#upload-file
//構造一個帶指定 Region 物件的配置類
Configuration cfg = new Configuration(Region.region0());
//...其他引數參考類註釋
UploadManager uploadManager = new UploadManager(cfg);
//...生成上傳憑證,然後準備上傳
String accessKey = "your access key";
String secretKey = "your secret key";
String bucket = "your bucket name";
//如果是Windows情況下,格式是 D:\\qiniu\\test.png
String localFilePath = "/home/qiniu/test.png";
//預設不指定key的情況下,以檔案內容的hash值作為檔名
String key = null;
Auth auth = Auth.create(accessKey, secretKey);
String upToken = auth.uploadToken(bucket);
try {
Response response = uploadManager.put(localFilePath, key, upToken);
//解析上傳成功的結果
DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
System.out.println(putRet.key);
System.out.println(putRet.hash);
} catch (QiniuException ex) {
Response r = ex.response;
System.err.println(r.toString());
try {
System.err.println(r.bodyString());
} catch (QiniuException ex2) {
//ignore
}
}
相關文章
- 快速使用七牛雲物件儲存物件
- ThinkPHP之七牛雲儲存PHP
- Laravel 七牛雲 sdk 物件儲存 示例 上傳語音Laravel物件
- 七牛儲存使用筆記筆記
- nodejs 使用七牛雲端儲存上傳檔案NodeJS
- 帶你玩轉七牛雲端儲存——高階篇
- PHP 利用 swoole 搭建一個七牛雲端儲存APIPHPAPI
- React Native 上傳圖片至七牛雲端儲存React Native
- 圖片儲存-從七牛到 GithubGithub
- 七牛雲馮立元:邊緣儲存的演進之路
- 七牛雲端儲存資料,刪除無用資料
- 使用七牛雲端儲存的一些經驗總結
- springboot專案上傳儲存圖片到七牛雲伺服器Spring Boot伺服器
- 七牛雲OSSUtil
- 儲存—物件儲存_Minio物件
- Laravel 使用阿里雲 oss 儲存物件Laravel阿里物件
- 塊儲存 檔案儲存 物件儲存物件
- 物件儲存物件
- Laravel 使用騰訊雲 cos 儲存物件Laravel物件
- WordPress如何使用騰訊雲物件儲存COS儲存媒體庫附件物件
- 七牛雲 goc docker 部署GoDocker
- 阿里雲物件儲存OSS支援版本管理特性阿里物件
- Hexo文章圖片儲存選七牛(當然支援MD都可以)Hexo
- 華為雲物件儲存OBS,助力企業高效解決儲存問題物件
- 物件儲存,未來儲存新潮流物件
- 如何用 Minio SDK 訪問滴滴雲物件儲存物件
- 阿里雲物件儲存OSS及CDN加速配置阿里物件
- 華為雲學院乾貨:物件儲存服務:便捷管理儲存資源物件
- 華為雲OBS物件儲存服務:值得擁有的貼心的儲存管家物件
- Unirech:阿里雲國際站的物件儲存oss與自建儲存的區別阿里物件
- minio-物件儲存物件
- 物件儲存 vs 檔案儲存 vs 塊儲存,選哪個?物件
- 騰訊雲物件儲存COS新品釋出——智慧分層儲存,自動優化您的儲存成本物件優化
- 分散式儲存ceph 物件儲存配置zone同步分散式物件
- DAOS 分散式非同步物件儲存|儲存模型分散式非同步物件模型
- 哪裡的物件儲存好?國內價效比高的雲端儲存推薦!物件
- 摩杜雲:物件儲存可以透過哪些方式使用?物件
- 騰訊雲物件儲存 COS搭建個人網站物件網站