七牛云图片上传 Node.js SDK

我太难了,一个前端去搞服务器端的代码,像我这样的开发速度会被开除的。因为自己一个人写,大概梳理下过程就是前端传一张图给后端,后端先保存在项目本地,再从项目本地传给七牛云。

 

七牛云 Node.js SDK 官方说明:https://developer.qiniu.com/kodo/sdk/1289/nodejs

官方说明就是demo写的太多太分散,让人根本不知道选哪个,还有少写了一行代码,我也是参考了很多其他人的代码才拼凑了一份完整的。

 

我的项目技术框架:

前端:https://github.com/TaleLin/lin-cms-vue

后端:https://github.com/TaleLin/lin-cms-koa

七牛云图片上传 Node.js SDK

 

上传的关键代码 file.js 

 

'use strict';

const {LinRouter,ParametersException} = require('lin-mizar');

const {LocalUploader} = require('../../extensions/file/local-uploader');

const path = require('path');

const qiniu = require("qiniu");

 

const file = new LinRouter({prefix: '/cms/file'});

 

file.post('/', async ctx => {

const files = await ctx.multipart();

if (files.length < 1) {

throw new ParametersException({

msg: '未找到符合条件的文件资源'

});

}

const uploader = new LocalUploader();

const arr = await uploader.upload(files);

console.log(arr);

ctx.json(arr);

 

const accessKey = '这里填入ak';

const secretKey = '这里填入sk';

var mac = new qiniu.auth.digest.Mac(accessKey, secretKey);

const bucket = 'room930'; //要上传的空间

var options = {scope: bucket};

var putPolicy = new qiniu.rs.PutPolicy(options);

var uploadToken = putPolicy.uploadToken(mac);

var key = files[0].filename;

 

var localFile = path.resolve(__dirname,'../../assets/',arr[0].path);

console.log("=========localFile========");

console.log(localFile);

console.log("=========localFile========");

var putExtra = new qiniu.form_up.PutExtra();

const config = new qiniu.conf.Config()

var formUploader = new qiniu.form_up.FormUploader(config);

// 文件上传

formUploader.putFile(uploadToken, key, localFile, putExtra, function (err, ret) {

if (!err) {

// 上传成功, 处理返回值

console.log(ret.hash, ret.key, ret.persistentId);

} else {

// 上传失败, 处理返回代码

console.log(err);

}

});

});

 

module.exports = {

file

};

 

备注:

上传的本地图片地址像这样的不行 http://localhost:5000/assets/2019/11/27/26ed361d-b0e5-4058-a309-97c7334a6b47.jpg 

需要是这样的 /Users/mumu/starter/app/assets/2019/11/27/26ed361d-b0e5-4058-a309-97c7334a6b47.jpg

七牛云图片上传 Node.js SDK