ファイルをアップロードするためのExpressベースのAPIを作成しようとしています。ファイル名とディレクトリパスは動的に設定する必要があります。NodeJsでMulterを使用してファイルをアップロード中にエラーが発生しました
マイコード:
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/
フォルダにアップロードする必要があります。 (このフォルダには2つのネストされたフォルダがあります - uploads/pics/shanmu
)。
私は郵便配達員からそれを起動したときには、一度しか動作しません。 2回目を試みるとファイルをアップロードできません。
お知らせください。