前言
圖片、視頻等資源如果存在自己服務器 訪問會很吃帶寬,可以將其放在云服務器 自己服務器只管理數(shù)據(jù)
七牛簡單使用 記錄如下
基本使用
前端接入七牛的sdk文件,使用七牛的api進行上傳
前臺向七牛上傳資源需要憑證token,為了安全考慮 憑證token需要后臺服務器去七牛獲取
后臺也需要引入對應的sdk文件 并獲取token給客戶端
客戶端先請求自己服務器獲取token 然后將圖片資源和token一起 調用七牛上傳圖片的api上傳圖片
默認簡單上傳完成后 七牛服務器會返回客戶端 key 和 hash值
如果需要上傳完成后后臺服務器做處理,需要配置 callbackUrl(是一個 外網(wǎng)可訪問的、post接口地址)
js文檔:https://developer.qiniu.com/kodo/1283/javascript
nodejs接入七牛
下載:npm instal qiniu --save
引入:const qiniu = require('qiniu');
使用:
var accessKey = 'xxx';
var secretKey = 'xxxxx';
var mac = new qiniu.auth.digest.Mac(accessKey, secretKey);
var options = {
scope: '七牛中上傳的空間名',
callbackUrl: '外網(wǎng)可訪問的post接口地址 上傳成功后七牛會請求此接口 ',
callbackBody: '{"key":"$(key)","hash":"$(etag)","fsize":$(fsize),"bucket":"$(bucket)","name":"$(x:name)"}',
//自定義的上傳成功后返回的的格式
callbackBodyType: 'application/json'//返回體數(shù)據(jù)類型
}
var putPolicy = new qiniu.rs.PutPolicy(options);
app.get('/qiniuToken', function (req, res) {
var uploadToken = putPolicy.uploadToken(mac);
res.json({ token: uploadToken });
});
js前臺接入七牛
安裝:npm install qiniu-js --save
引入:<script src="./node_modules/qiniu-js/dist/qiniu.min.js"></script>
使用:
上傳前壓縮:
const options = {
//圖片質量
quality: 0.52,
//如果壓縮后size比原圖大 是否就不壓縮
//不壓縮下面回調函數(shù)中data里的dist就會返回原文件
noCompressIfLarger: true,
// maxWidth: 800,
// maxHeight: 618
}
qiniu.compressImage(imgFile, options).then(data => {
// data 壓縮后的文件或原文件
console.log(data);
});
上傳:
// qiniu.upload(文件,文件名,后端獲取的憑證token,空間名,配置對象(全部可選);
//返回observable對象
const observable = qiniu.upload(data.dist, data.dist.name, token, '空間名', {});
// subscription: 為一個帶有 unsubscribe 方法的類實例,
// 通過調用 subscription.unsubscribe() 停止當前文件上傳。
const subscription = observable.subscribe({
next(res) {
// ...
console.log('next==', res);
},
error(err) {
// ...
console.log('error==', err);
},
complete(res) {
// ...
console.log('complete==', res);
}
})