Ich bin neu bei Node JS, so Dinge sind nicht leicht zu mir kommen. Das Szenario ist Ich habe Eingabefeld, das mehrere Dateien akzeptiert.NodeJS: kann nicht nach Anfrage Textfeld posten
<input id="upload-input" type="file" name="uploads[]" multiple="multiple">
in meinem JS Skript packe ich das das Änderungsereignis dieses Feldes, und erstellen, um meine Uploader App eine Post-Anforderung, die in verschiedenen Port formData
und ajax
post-Methode
$('#upload-input').on('change', function() {
var files = $(this).get(0).files;
if (files.length > 0) {
var formData = new FormData();
formData.append('directory', "path/to/directory");
for (var i = 0; i < files.length; i++) {
var file = files[i];
formData.append('uploads[]', file, file.name);
}
$.ajax({
url: 'https://myurl.com:3000/upload',
type: 'POST',
data: formData,
processData: false,
contentType: false,
success: function(data) {
console.log(data);
},
});
}
});
Jetzt läuft die Datei sendet und in meinem Backend kann ich hochladen, dass formidable
verwenden, aber das Problem ist, ich nicht den directory
Wert bekommen kann, ist hier mein Code
require('dotenv').load();
var express = require('express');
var app = express();
var path = require('path');
var formidable = require('formidable');
var fs = require('fs');
var session = require('express-session');
app.set('views', __dirname + '/public');
app.use('/uploads', express.static(process.env.USER_UPLOADS))
var cors=require('cors');
app.use(cors({origin:true,credentials: true}));
app.post('/upload', function(req, res) {
var user_folder = "path/to/directory/";
var form = new formidable.IncomingForm();
form.multiples = true;
form.uploadDir = path.join(__dirname, process.env.USER_UPLOADS + user_folder);
form.on('file', function(field, file) { fs.rename(file.path, path.join(form.uploadDir, file.name)); });
form.on('error', function(err) { console.log('An error has occured: \n' + err); });
form.on('end', function() { res.end('success'); });
form.parse(req);
});
var server = app.listen(3000, function(){
console.log('Server listening on port 3000');
});
Ich versuchte
console.log(req.body)
aber es gibt undefined
, also wie kann ich den directory
Wert von meinem Backend bekommen?
Vielen Dank im Voraus.
Sie sehen in so etwas wie [dieser] (https://www.npmjs.com/package/express-fileupload) NPM-Paket? –
Danke, es funktioniert für mich. –
Ehrfürchtig. Froh das zu hören. –