0
Gibt es eine problom mit meinem Knoten Upload-Datei Code:NodeJS Bild hochladen Code: Fehler: ENOENT: keine solche Datei oder das Verzeichnis
app.post("/process/:year/:month", function(req,res){
const dataDir = __dirname + '/public/data';
const photoDir = dataDir + '/upload-logo';
fs.stat(dataDir, function(err, stat) {
if(err == null) {
console.log('File exists');
return;
} else if(err.code == 'ENOENT') {
// file does not exist
fs.mkdirSync(dataDir);
return;
} else {
console.log('Some other error: ', err.code);
return;
}
});
fs.stat(photoDir, function(err, stat) {
if(err == null) {
console.log('File exists');
return;
} else if(err.code == 'ENOENT') {
// file does not exist
fs.mkdirSync(photoDir);
return;
} else {
console.log('Some other error: ', err.code);
return;
}
});
try{
//store the data to the database
console.info('Received contact from ' + req.user.local.username + " <" + req.body.email + '>');
console.log('the file uploaded: ' , JSON.stringify(req.body));
const form = new formidable.IncomingForm();
form.parse(req,function(err,fields,files){
if(err){return res.redirect(303, '/404');}
const photo = files.photo;
const timeDir = `${req.params.year}${req.params.month}`;
const thedir = photoDir + `/${req.params.year}${req.params.month}`;//prevent uploading file with the same name
fs.stat(thedir, function(err, stat) {
console.log('stat parts begins...');
if(err == null) {
console.log('File exists');
return;
} else if(err.code == 'ENOENT') {
// file does not exist
console.log('the file does not exist.now creating...');
fs.mkdirSync(thedir);
return;
} else {
console.log('Some other error: ', err.code);
return;
}
});
const photoName = Date.now() + photo.name;
const fullPath = thedir + '/' + photoName;
console.log('the dir is :' + thedir);
console.log(photo.name,photo.path,fullPath);
fs.renameSync(photo.path, fullPath);//rename or move the file uploaded;and photo.path is the temp file Formidable give
if(req.user){
function saveFileInfo(){
const user = req.user;
user.local.logo = timeDir + '/' + phontoName;
user.save(function(err){
if(err){throw err}
req.flash('success','Upload your logo successfully');
res.redirect('/user/profile');
});
}
// saveFileInfo('upload-photo', fields.email,req.params.year,fields.params.year,fields.params.month,path);
}else{
console.log('user not login');
req.flash('eror','You need to login first to upload your logo');
res.redirect(303, '/login');
}
//console.log('received fields:', fields);
//console.log('received files:', photo.name);
});
req.flash('success', 'Uploading successfully!')
return res.xhr ? res.render({success: true}) :
res.redirect(303, '/success');
} catch(ex){
return res.xhr ?
res.json({err: 'Database error.'}):
res.redirect(303, '/db-error');
}
});
oben Code gab mir Fehler:
fs.js:681
return binding.rename(pathModule._makeLong(oldPath),
^
Error: ENOENT: no such file or directory, rename '/var/folders/vq/cdlwyckx68zdf586bd3c789h0000gn/T/upload_2e1c480cfbdf943fe1dd45dbb2ccc37e' -> '/Users/frank25184/Desktop/nodejs/nodeForm-team/public/data/upload-logo/20167/147114292564330682361630021890.jpg'
at Error (native)
at Object.fs.renameSync (fs.js:681:18)
at /Users/frank25184/Desktop/nodejs/nodeForm-team/routes.js:496:24
at IncomingForm.<anonymous> (/Users/frank25184/Desktop/nodejs/nodeForm-team/node_modules/formidable/lib/incoming_form.js:105:9)
at emitNone (events.js:67:13)
at IncomingForm.emit (events.js:166:7)
at IncomingForm._maybeEnd (/Users/frank25184/Desktop/nodejs/nodeForm-team/node_modules/formidable/lib/incoming_form.js:553:8)
at /Users/frank25184/Desktop/nodejs/nodeForm-team/node_modules/formidable/lib/incoming_form.js:230:12
at WriteStream.<anonymous> (/Users/frank25184/Desktop/nodejs/nodeForm-team/node_modules/formidable/lib/file.js:70:5)
at WriteStream.g (events.js:260:16)
at emitNone (events.js:72:20)
at WriteStream.emit (events.js:166:7)
at finishMaybe (_stream_writable.js:481:14)
at afterWrite (_stream_writable.js:355:3)
at onwrite (_stream_writable.js:345:7)
at WritableState.onwrite (_stream_writable.js:89:5)
Ich habe versucht, für einen halben Tag. aber es ist nicht gelungen. zeige diesen Fehler immer an. aber ich habe fs.stat() Funktion das thedir Verzeichnis
jedermann zu machen wissen, was hier vor sich geht, dank