【发布时间】:2017-10-09 03:40:52
【问题描述】:
我正在尝试编写一个基于 Express 的 API 来上传文件。文件名和目录路径应动态设置。
我的代码:
var crypto = require('crypto')
var express = require('express');
var fs = require('fs');
var mime = require('mime');
var mkdirp = require('mkdirp');
var multer = require('multer');
var app = express();
var path = './uploads';
var storage = multer.diskStorage({
destination: function (req, file, callback) {
callback(null, path);
console.log('Im in storage destination'+path);
},
filename: function (req, file, callback) {
console.log('Im in storage filename'+path);
//callback(null, file.fieldname + '-' + Date.now());
crypto.pseudoRandomBytes(16, function (err, raw) {
callback(null, Date.now() + '.' + mime.extension(file.mimetype));
});
}
});
var upload = multer({ storage : storage}).single('userPhoto');
app.post('/photo',function(req,res){
path += '/pics/shanmu/';
console.log('Im in post , outside upload'+path);
upload(req,res,function(err) {
console.log('Im in post , inside upload'+path);
if(err) {
return res.end('Error uploading file.');
}
res.end('File is uploaded'+path);
console.log('File is uploaded'+path);
});
});
app.listen(3000,function(){
console.log('Working on port 3000');
});
我的文件夹结构:
当我运行代码时,文件应该上传到uploads/ 文件夹中。 (这个文件夹里面有两个嵌套文件夹 - uploads/pics/shanmu)。
当我从邮递员触发它时,它只工作一次。当我第二次尝试时,我无法上传文件。
请指教。
【问题讨论】:
标签: node.js express postman multer