javascript - Why does my nodejs pdf upload code return Status 415 "unsupported Media Type" -
hey using node.js framework hapi.js create simple file upload api. after receive file convert pdf file png. have been looking hapi.js docs on uploading files have had no luck. after receive file want utilize node file scheme read , pass command line tool.
here route conversion:
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 info = 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'); }); } } } }); i have simple form method post , action set /convert route. see error is? have not used hapi.js before this.
here header in 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, 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' }
as can see in headers, content-type header set application/x-www-form-urlencoded:
'content-type': 'application/x-www-form-urlencoded' however not in list of allowed content types:
allow: ['application/json', 'image/jpeg', 'multipart/form-data','application/pdf'] that's why hapi responds 415. instead of validating type of request, validate type of file in payload:
validate: { payload: { fileupload: joi.object({ headers: joi.object({ 'content-type': joi.string().valid(['application/pdf']).required(), }).unknown().required() }).unknown() } } javascript node.js pdf hapijs
No comments:
Post a Comment