TIP
通过node上传文件到七牛云
npm i qiniu
js
// 上传至七牛云并添加进unicloud数据库
const fs = require('fs');
const qiniu = require('qiniu');
const path = require('path');
// 鉴权 七牛云-个人中心-秘钥管理
const accessKey = 'lbTpYtbcutEcDn9rxxxx';
const secretKey = 'poboj1IB4yXUi3Gofxxxxx';
const mac = new qiniu.auth.digest.Mac(accessKey, secretKey);
//自定义凭证有效期(示例2小时,expires单位为秒,为上传凭证的有效时间)
const options = {
scope: 'wstee', // 对象存储空间名
expires: 7200
};
const putPolicy = new qiniu.rs.PutPolicy(options);
const uploadToken=putPolicy.uploadToken(mac);
var config = new qiniu.conf.Config();
// 空间对应的机房
// 华东 qiniu.zone.Zone_z0
// 华北 qiniu.zone.Zone_z1
// 华南 qiniu.zone.Zone_z2
// 北美 qiniu.zone.Zone_na0
config.zone = qiniu.zone.Zone_z0;
// 是否使用https域名
//config.useHttpsDomain = true;
// 上传是否使用cdn加速
//config.useCdnDomain = true;
// 流上传
const formUploader = new qiniu.form_up.FormUploader(config);
let putExtra = new qiniu.form_up.PutExtra();
async function main() {
// 读取目录
const dir = '英语';
const grade = 91;
const baseUrl = 'http://src.wstee.com' // 七牛自定义域名
// let files = fs.readdirSync(path.join(__dirname, dir));
const datas = fs.readFileSync(path.join(__dirname, dir, 'data.json'));
const list = JSON.parse(datas.toString());
const start = 0
for(i = start; i<list.length; i++) {
console.log(list[i].title, i);
// 上传图片和视频
if(i===0) {
await uploadFile(path.join(__dirname, dir, 'cover.jpg'), `${dir}/${grade}/cover.jpg`);
}
await uploadFile(path.join(__dirname, dir, list[i].title+'.mp4'), `${dir}/${grade}/${i}.mp4`);
const src = `${baseUrl}/${dir}/${grade}/${i}.mp4`;
const cover = `${baseUrl}/${dir}/${grade}/cover.jpg`;
}
}
main(); // 执行
/**
* 上传文件
* @param {*} localFile 文件地址
* @param {*} key 文件名 /test/test.mp3
*/
function uploadFile(localFile, key) {
putExtra = new qiniu.form_up.PutExtra();
return new Promise((resolve, reject) => {
formUploader.putFile(uploadToken, key, localFile, putExtra, function(respErr,
respBody, respInfo) {
if (respErr) {
throw respErr;
reject(false);
}
if (respInfo.statusCode == 200) {
console.log(respBody);
resolve(true);
} else {
console.log(respInfo.statusCode);
console.log(respBody);
reject(false);
}
});
})
}