Last active
May 31, 2018 06:17
-
-
Save troyz/7a334f369005d4d36c6e1e50151ca68b to your computer and use it in GitHub Desktop.
上传本地图片至七牛云服务器
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 将微信小程序(wepy)源代码目录:src/assets/images 下的所有图片上传到七牛云服务器, | |
* 请修改参数: | |
* 七牛云参数:accessKey,secretKey,bucket | |
* 工程目录参数:imageFolderPath,projectQiNiuFolder | |
* 七牛云文档:https://developer.qiniu.com/kodo/sdk/1289/nodejs | |
*/ | |
let qiniu = require("qiniu"); | |
let fs = require("fs"); | |
let path = require("path"); | |
// 本地将要上传的图片文件夹路径 src/assets/images | |
let imageFolderPath = path.join('src', 'assets', 'images'); | |
// `imageFolderPath` 保存到七牛云之后对应的目录,图片访问路径样例:http://******.clouddn.com/mp-travel/assets/images/eye.png | |
let projectQiNiuFolder = 'mp-travel/assets/images'; | |
let accessKey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; | |
let secretKey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; | |
let bucket = 'xxxxxxxxxxxx'; | |
//需要填写你的 Access Key 和 Secret Key | |
qiniu.conf.ACCESS_KEY = accessKey; | |
qiniu.conf.SECRET_KEY = secretKey; | |
var mac = new qiniu.auth.digest.Mac(accessKey, secretKey); | |
//构建上传策略函数 | |
function uptoken(bucket, key) | |
{ | |
var putPolicy = new qiniu.rs.PutPolicy({ | |
scope: bucket + ':' + key, | |
}); | |
return putPolicy.uploadToken(mac); | |
} | |
var config = new qiniu.conf.Config(); | |
// 空间对应的机房 | |
config.zone = qiniu.zone.Zone_z0; | |
var formUploader = new qiniu.form_up.FormUploader(config); | |
var putExtra = new qiniu.form_up.PutExtra(); | |
// 文件上传到七牛云 | |
function uploadImage(key, filePath) | |
{ | |
//生成上传 Token | |
let token = uptoken(bucket, key); | |
// 文件上传 | |
formUploader.putFile(token, key, filePath, putExtra, function (respErr, respBody, respInfo) { | |
if (respErr) | |
{ | |
throw respErr; | |
} | |
if (respInfo.statusCode == 200) | |
{ | |
console.log(respBody); | |
} | |
else | |
{ | |
console.log('文件上传失败'); | |
console.log(respInfo.statusCode); | |
console.log(respBody); | |
} | |
}); | |
} | |
// 递归读取图片文件 | |
function recursiveUploadImageFiles(filePath) | |
{ | |
fs.readdir(filePath, undefined, function(err, files){ | |
if(err) | |
{ | |
console.log(err); | |
return; | |
} | |
files.forEach(function(filename){ | |
// 获取当前文件的绝对路径 | |
var filedir = path.join(filePath, filename); | |
// 根据文件路径获取文件信息,返回一个fs.Stats对象 | |
fs.stat(filedir,function(err, stats){ | |
if(err) | |
{ | |
console.log(err); | |
return; | |
} | |
if(stats.isDirectory()) | |
{ | |
recursiveUploadImageFiles(filedir); | |
} | |
else if(stats.isFile()) | |
{ | |
let targetFiledir = filedir.replace(imageFolderPath, projectQiNiuFolder).replace(/\\/g, '/'); | |
// console.log(`${filedir} -> ${targetFiledir}`); | |
uploadImage(targetFiledir, filedir); | |
} | |
}); | |
}); | |
}); | |
} | |
recursiveUploadImageFiles(imageFolderPath); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment