上传流程
1.申请上传权限
- 安装七牛云的SDK
npm install qiniu
- 在项目中引入,定义好鉴权对象
mac
const qiniu = require('qiniu') // 引入七牛云的SDK
var accessKey = 'your access key';
var secretKey = 'your secret key';
var mac = new qiniu.auth.digest.Mac(accessKey, secretKey);
accessKey 和 searetKey 可以在 https://portal.qiniu.com/user/key 查看
2.获取上传凭证
var options = {
scope: 'mySpace', // 必填, 七牛云控制台添加的空间名称
expires: 7200, // expires非必填, 在不指定上传凭证的有效时间情况下,默认有效期为1个小时。expires单位为秒
returnBody: '{"key":"$(key)","hash":"$(etag)","fsize":$(fsize),"bucket":"$(bucket)","name":"$(x:name)"}'
// returnBody非必填, 有时候我们希望能自定义这个返回的JSON格式的内容,可以通过设置returnBody参数来实现。
};
var putPolicy = new qiniu.rs.PutPolicy(options); // 配置
var uploadToken = putPolicy.uploadToken(mac); // 获取上传凭证
如果还没有空间options.scope,需要到七牛云控制台新增
https://portal.qiniu.com/kodo/bucket
3.使用上传凭证上传文件并返回上传结果
- 配置
var config = new qiniu.conf.Config();
// 空间对应的机房
config.zone = qiniu.zone.Zone_z0;
// 是否使用https域名
//config.useHttpsDomain = true;
// 上传是否使用cdn加速
//config.useCdnDomain = true;
机房 | Zone对象 |
---|---|
华东 | qiniu.zone.Zone_z0 |
华北 | qiniu.zone.Zone_z1 |
华南 | qiniu.zone.Zone_z2 |
华美 | qiniu.zone.Zone_na0 |
- 上传
var formUploader = new qiniu.form_up.FormUploader(config);
// formUploader.putFile方法上传文件
// 第一个属性为上传凭证
// 第二个属性为上传文件要以什么命名 null 则随机命名
// 第三个为文件的相对地址, 相对为当前执行文件的地址
// 第四个属性putExtra, 应该是额外需要的参数,用new qiniu.form_up.PutExtra()获取
// 第五个为回调函数,respErr失败内容 respBody主体内容 respInfo信息内容
var putExtra = new qiniu.form_up.PutExtra();
formUploader.putFile(uploadToken, null, './image.png', putExtra, function (respErr, respBody, respInfo) {
if (respErr) {
throw respErr;
}
if (respInfo.statusCode == 200) {
console.log(respBody);
// 如果成功,这里内容便是 图片信息
} else {
console.log(respInfo.statusCode);
console.log(respBody);
}
});
// respBody的信息
{
hash: 'Fheolstp8e4qRrWz1e9v8RBvczxO',
key: 'Fheolstp8e4qRrWz1e9v8RBvczxO'
}
// 如果在前面的options 配置了returnBody属性
{
key: 'Fheolstp8e4qRrWz1e9v8RBvczxO',
hash: 'Fheolstp8e4qRrWz1e9v8RBvczxO',
fsize: 2145,
bucket: 'mySpace',
name: 'null'
}