我在hapijs服务器上有以下路线。我正在尝试使用ajax创建一个新文件。
{
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指定为undefined。我缺少什么?
在hapi文档http://hapijs.com/api#requests中,输出为stream
'stream' - 传入的有效负载通过a提供 Stream.Readable接口。如果有效载荷是'multipart / form-data'和 parse为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代码,因为我只需要在从系统中选择文件后提交表单
答案 0 :(得分:0)
html应该是
<form enctype="multipart/form-data" action="/create" method="post">
<input type="file" name="file" id="UniqueFileImporter"/>
<input type="submit"/>
</form>