Express图片上传至七牛云
依赖
npm install qiniu -S
npm install formidable-S
上传代码
const express = require('express');
const Routers = express.Router();
var path = require('path')
const fs = require('fs')
var formidable = require('formidable');
const moment = require('moment');
const qiniu = require('qiniu')
const accessKey = '***********'
const secretKey = '**********'
const bucket = '*****'
/ 七牛云 上传
Routers.post('/upload', (req,res) => {
let form = new formidable.IncomingForm();
form.parse(req, function (err, fields, filesa){
let MathRoundNumber = Math.round(Math.random()*100000)
let MathRound = moment().format("YYYY_MM_DD_hh_mm_ss")
let key = MathRound+MathRoundNumber+filesa.file.type
let path= filesa.file.path
let mac = new qiniu.auth.digest.Mac(accessKey,secretKey)
let options = {
scope: bucket,
expires: 3600 * 24
}
let putPolicy = new qiniu.rs.PutPolicy(options)
let uploadToken = putPolicy.uploadToken(mac)
uploadFile(uploadToken, key, path).then(idea=>{
res.json({
code: 0,
msg: '上传成功',
data:{
url: "http://img.abcdf.top/"+idea.key
}
})
})
.catch(err=>{
res.json({
code: 4,
msg: '上传失败',
data:{
url: "http://img.abcdf.top/"+err.key
}
})
})
async function uploadFile(uptoken, key, localFile) {
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();
return new Promise((resolve,reject)=>{
formUploader.putFile(uptoken, key, localFile, putExtra, function(respErr,
respBody, respInfo) {
if (respErr) {
throw respErr;
}
if (respInfo.statusCode == 200) {
resolve(respBody)
} else {
reject(respBody)
}
})
})
}
})
})