为什么我的nodejs pdf上传代码返回状态415“不支持媒体types”

嘿所以我使用Node.js框架Hapi.js做一个简单的file uploadapi。 我收到文件后,我将把PDF文件转换成PNG。 我一直在寻找一些上传文件Hapi.js文件,但没有运气。 收到文件后,我想使用节点文件系统读取它,然后将其传递给命令行工具。

这是我的转换路线:

server.route({ method: 'POST', path: '/convert', config: { payload: { output: 'stream', parse: true, allow: ['application/json', 'image/jpeg', 'multipart/form-data','application/pdf'] //allow:'application/json' }, handler:function (request, reply) { console.log(request.raw.req); var data = request.payload; if (data.file) { var name = data.file.hapi.filename; console.log(name); var path = __dirname + "/uploads/" + name; console.log(path); var file = fs.createWriteStream(path); file.on('error', function (err) { console.error(err) }); data.file.pipe(file); data.file.on('end', function (err) { var ret = { filename: data.file.hapi.filename, headers: data.file.hapi.headers } console.log(JSON.stringify(ret)); reply(JSON.stringify(ret)); }); data,file.on('data',function(err){ console.log('data'); }); } } } }); 

我有一个简单的forms与方法POST和动作设置为我/转换路线。 有人看到我的错误在哪里? 在这之前我没有使用hapi.js。

这是我的post中的标题:

 headers: { host: 'localhost:8000', connection: 'keep-alive', 'content-length': '31', 'cache-control': 'max-age=0', accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', origin: 'http://localhost:8000', 'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/37.0.2062.120 Chrome/37.0.2062.120 Safari/537.36', 'content-type': 'application/x-www-form-urlencoded', referer: 'http://localhost:8000/convert', 'accept-encoding': 'gzip,deflate', 'accept-language': 'en-US,en;q=0.8' } 

正如您在标题中看到的那样, Content-Type标头设置为application/x-www-form-urlencoded

 'content-type': 'application/x-www-form-urlencoded' 

但是它不在允许的内容types列表中:

 allow: ['application/json', 'image/jpeg', 'multipart/form-data','application/pdf'] 

这就是为什么hapi以415响应。而不是validation请求的types,validation有效载荷中文件的types:

 validate: { payload: { fileUpload: Joi.object({ headers: Joi.object({ 'content-type': Joi.string().valid(['application/pdf']).required(), }).unknown().required() }).unknown() } }