【发布时间】:2014-11-09 23:58:55
【问题描述】:
我更改了代码以输出文件而不是流。它为我提供了 tmp 路径,当我使用 fs.readFile 转换为字符串时的数据是
fileUpload=Resume_BrianInoa.pdf
我正在向 hapijs 服务器发布一个文件,这是我处理该帖子的路线:
server.route({
method: 'POST',
path: '/convert',
config: {
payload: {
output:'file',
maxBytes:209715200,
parse: false,
allow: 'application/x-www-form-urlencoded'
},
handler:function (request, reply) {
console.log('path : ' + request.payload.path);
// request.payload["fileUpload"].pipe(fs.createWriteStream("test"));
fs.readFile(request.payload.path, function (err, data) {
if(err)
console.error(err);
else
console.log(data.toString());
// I want to rewrite the file to a new folder here
// Then convert it using imageMagick's command line tool
// var newPath = __dirname + "/uploads/" + "newFile.txt" ;
// fs.writeFile(newPath, data, function (err) {
// console.log(err);
// reply('done');
// });
});
}
},
这是我的 request.payload
path : /tmp/1415580285921-24240-2cc7987f4fd124ac
我实际上检查了我的 /tmp/ 文件夹并打开了它唯一的文件
/tmp/1415580285921-24240-2cc7987f4fd124ac
已经是 fileUpload=Resume_BrianInoa.pdf 文件未正确上传
我的表单的html代码
<form action="./convert" method="post">
<input type="file" name="fileUpload" id="fileUpload" enctype="multipart/form-data" class="form-control">
<button class="btn">Submit</button>
</form>
【问题讨论】:
-
你是如何上传文件的?似乎它没有被上传,你只是将文件名发送到服务器。此外,如果您像以前一样禁用解析,则必须自己解析请求,然后才能访问文件数据。使用
request.payload.fileUpload.path上传文件后,您可能会更好地保留解析并访问文件 -
我正在使用一个简单的表单 上传指定 enctype 的文件 convert 有一个 post 路由,正在处理上面的文件代码。
-
将 enctype 移动到表单标签
-
我按照你说的做了,现在我得到了一个 statusCode 415 不受支持的媒体类型。和payload的accept属性有关系吗?
-
忽略我的最后一条评论,accept 参数应该影响请求 mime 类型,而不是发送文件的实际 mime,因此您可以尝试将
accept设置为'multipart/form-data',如果您只想允许它,但我认为将其保留为默认值应该是安全的
标签: javascript node.js pdf asyncfileupload hapijs