当提交多个上传时,以下 index.js 可以正常工作:
curl http://localhost:4000/upload -F 'files=@data/file1.txt' -F
'files=@data/file2.txt'
但是如果只提交一个文件就会失败:
curl http://localhost:4000/upload -F 'files=@data/file1.txt'
因为 hapi 期望files
成为一个数组。
如果我改用它也不起作用files[]
,那就是
curl http://localhost:4000/upload -F 'files[]=@data/file1.txt'
index.js
我可以通过检查是否是一个数组来解决这个问题files
,如果不是,我会用[files]包装它,这样剩余的代码就不会中断,但我觉得解决方案不是那么优雅。这是 hapi.js 文件上传处理中的限制/错误吗?
/* index.js */
const Hapi = require('hapi')
const server = new Hapi.Server()
server.connection({
port:4000
})
const routes = [
{
path: '/upload',
method: 'POST',
config: {
payload: {
output: 'stream',
parse: true,
allow: 'multipart/form-data'
}
},
handler: function(request, reply) {
const p = request.payload, files = p.files
if(files) {
console.log(`${files.length} files`)
files.forEach(function(file) {
// do something with file here
})
}
return reply({result: 'ok'})
}
}
]
server.route(routes)
server.start(function() {
console.log(`server started at ${server.info.uri}`)
})