У меня есть следующий маршрут на сервере hapijs. И я пытаюсь создать новый файл с помощью ajax.Как найти полезную нагрузку в hapi
{
method: 'POST',
path: '/create',
config : {
payload:{
maxBytes: 10*1024*1024,
output:'stream',
parse: true,
allow: 'multipart/form-data'
},
handler: function (request, reply) {
var data = request.payload;
if (data.file) { // undefined always
var name = data.file.hapi.filename;
var path = writePath + '/' + name;
var file = fs.createWriteStream(path);
file.on('error', reply);
data.file.pipe(file);
data.file.on('end', function (err) {
reply({
filename: data.file.hapi.filename,
headers: data.file.hapi.headers
});
});
} else reply(boom.badRequest('No file found. Please try again.'));
}
}
Приведенный выше код всегда дает data.file как неопределенный. Что-нибудь мне не хватает?
В хапи документации http://hapijs.com/api#requests, если выход stream
'поток' - входящий полезной нагрузки доступны через Stream.Readable интерфейс. Если полезная нагрузка представляет собой «multipart/form-data» и , синтаксический анализ равен true, значения полей представляются в виде текста, а файлы - , предоставляемые в виде потоков. Файловые потоки из загрузки «multipart/form-data» также будут иметь свойство hapi, содержащее имя файла и заголовки .
HTML код:
<form enctype="multipart/form-data" action="/create" method="post">
<input type="file" id="UniqueFileImporter"/>
<input type="submit"/>
</form>
конечно нет кода JS, так как я просто нужно отправить форму после выбора файла из системы
Конечно, вы отправляете форму с полем ввода файла с именем 'file'? Код выше выглядит правильно, поэтому нам нужно будет увидеть код для формы HTML и/или код AJAX –
@MattHarrison эй я добавил html, пожалуйста, посмотрите, помогает ли он – user3585284