В Express 4, не req.files больше недоступна на объекте REQ по умолчанию. Вот мое решение с грозным:
передний конец: Markup:
<input type="file" id="file"/>
<button id="send-file">Send</button>
JS:
//send file
var send_file = $("#send-file");
send_file.on("click", function(e) {
//file
var file = $("#file")[0].files[0];
//formdata
var fd = new FormData();
fd.append("file", file, "file_name");
//send file
$.ajax({
url: '/upload',
data: fd,
cache: false,
contentType: false,
processData: false,
type: 'POST'
})
.done(function(data) {
console.log(data);
console.log("Upload successfully");
});
});
return false;});
Назад конец:
установки грозным: npm install formidable --save
И последний p:
var express = require('express');
var app = express();
var path = require('path');
var fs = require('fs');
var formidable = require('formidable');
app.post('/upload', function(req, res) {
// create an incoming form object
var form = new formidable.IncomingForm();
// specify that we want to allow the user to upload multiple files in a single request
form.multiples = true;
// store all uploads in the /uploads directory
form.uploadDir = path.join(__dirname, './uploads');
// every time a file has been uploaded successfully,
// rename it to it's orignal name
form.on('file', function(field, file) {
fs.rename(file.path, path.join(form.uploadDir, file.name));
});
// log any errors that occur
form.on('error', function(err) {
console.log('An error has occured: \n' + err);
});
// once all the files have been uploaded, send a response to the client
form.on('end', function() {
console.log(Date.now())
res.end('success');
});
// parse the incoming request containing the form data
form.parse(req);
});
И вы включили Экспресс также? – adeneo
Да, у меня есть, я отредактирую вопрос, чтобы включить его –
Какая версия nodejs? –