им triying, чтобы загрузить файл с multer но всегда req.file неопределен и папка назначения пуст:Node.js multer req.file всегда неопределенными
Сервер:
var express = require('express');
var multer = require('multer')
var app = express();
var storage = multer.diskStorage({
destination: function(req, file, cb) {
cb(null, './public/uploads/'); // Make sure this folder exists
},
filename: function(req, file, cb) {
console.log(file)
var ext = file.originalname.split('.').pop();
cb(null, file.fieldname + '-' + Date.now() + '.' + ext);
}
}),
upload = multer({
storage: storage
}).single('avatar');
app.post('/uploads', upload, (req, res) => {
console.log('body', req.body);
console.log('file', req.file);
res.json("ok")
});
Клиент:
Я просмотрел множество ответов, но ничего не получилось.
<form id="myform" encrypt="multipart/form-data">
<label for="userName">Name</label>
<input type="text" name="userName"/>
<br>
<label for="phoneNumber">PhoneNumber</label>
<input type="text" name="phoneNumber"/>
<br>
<label for="file">UploadFile</label>
<input type="file" name="avatar"/>
<input type="submit"/>
</form>
$('#myForm').submit(function(e){
var formData = new FormData($(this)[0]);
$.ajax({
type:'POST',
url:'uploads',
data : formData,
contentType: true,
processData: false
}).done(function(data){
//print response on success
console.log(data);
}).fail(function(data) {
console.log('Error');
});
e.preventDefault();
});
Можете ли вы сказать мне, что я делаю неправильно, пожалуйста?
Ваш образец работает, большое вам спасибо. Можете ли вы рассказать мне, как я могу уловить ответ? –
Куда вы хотите его поймать? Вы хотите, чтобы браузер оставался на странице с формой загрузки? – Marc
Да, это то, что я хочу, смена браузера на http: // myip/uploads –