Ich versuche, eine Express-basierte API zum Hochladen von Dateien zu schreiben. Der Dateiname und der Verzeichnispfad sollten dynamisch festgelegt werden.Fehler beim Hochladen von Dateien mit Multer in NodeJs
Mein Code:
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');
});
Meine Ordnerstruktur:
Wenn ich den Code ausführen, sollte die Datei im uploads/
Ordner hochgeladen werden. (Dieser Ordner enthält zwei verschachtelte Ordner - uploads/pics/shanmu
).
Wenn ich es vom Postboten ausgelöst habe, funktioniert es nur einmal. Wenn ich das zweite Mal versuche, kann ich keine Dateien hochladen.
Bitte beraten.