2015-10-02 6 views
2

Я пытаюсь загрузить файлы на свой сервер и извлечь их из почтового запроса с помощью промежуточного программного обеспечения connect-multiparty. Тем не менее, когда я получаю запрос на сервер, то req.files и req.body объекты являются пустыми (не равно нулю, но node-inspector показывает, что они Object s ни с чем в нихПравильный способ использования connect-multiparty с express.js?

Вот код, который я работаю с.:

server.js:

var express = require("express"); 
var app = express(); 
var server = require("http").Server(app); 
var fs = require("fs"); 
var multipart = require('connect-multiparty'); 

app.use(express.static("public")); 
app.use(multipart()); 

app.post("/httpUpload", function(req, res) { 
    console.log("Received post request"); 
} 

index.html:

<form action="/httpUpload" method="post" enctype="multipart/form-data"> 
    <input type="file" id="uploadFileInput"> 
    <div class="row"> 
    <div class="col-md-6"> 
     <input type="submit"> 
    </div> 
    </div> 
</form> 

Я получил аналогичный результат s пытается использовать multer, connect-busboy и body-parser. Мне бы очень понравилось, если бы это решение сработало для меня, но это не так: http://howtonode.org/really-simple-file-uploads

Итак ... единственная распространенная тема во всех моих неудачных попытках - это я. o) Любые идеи, что я делаю неправильно?

ответ

1

Ну ... это не совсем ответ на мой вопрос, но когда я изменил свой код, чтобы удалить форму и отправить запрос на отправку через метод ajax jQuery, объект имел в нем мои данные. (Пожав плечами) Здесь был код в моих JS, что сделало работу:

$.ajax({ 
    url: "/httpUpload", 
    type: "POST", 
    processData: false, // important 
    contentType: false, // important 
    dataType : "json", 
    data: formData 
}); 

Это пост, который поставил меня на правильный путь: File Upload without Form

+2

Это потому, что в соответствии с README, необходимо использовать объект multipary Form(), чтобы использовать формы : https://github.com/pillarjs/multiparty#usage – sijpkes

1

вот мой способ извлечения загруженных файлов:

var express = require('express'); 
var multiparty = require('connect-multiparty'), 
    multipartyMiddleware = multiparty({ uploadDir: './imagesPath' }); 

var router = express.Router(); 

router.post('/', multipartyMiddleware, function(req, res) { 
    console.log(req.body, req.files); 
    var file = req.files.file; 
    console.log(file.name); 
    console.log(file.type); 
    res.status(200).send('OK'); 
}); 

module.exports = router; 

это сэкономит вам uploded файлы в папку imagesPath