目前我们正在使用Polymer作为前端。在聚合物中,我们有元素“vaadin-upload”。
问题:我们无法触发/跟踪节点js代码。当我们尝试上传图像时,它会抛出POST 404 not found错误。
请查看下面的Polymer和NodeJS代码。
聚合物:
<vaadin-upload target="http://localhost:5000/upload" method="POST" timeout="300000" headers="{'X-Custom-Header': 'value'}"></vaadin-upload>
节点Js :
var server = new Hapi.Server();
server.route({
method: 'POST',
path: '/upload',
config: {
payload:{
maxBytes:209715200,
output:'stream',
parse: false
},
handler: function (request, reply) {
var data = request.payload;
if (data.file) {
var name = data.file.hapi.filename;
var path = __dirname + "/upload/" + name;
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
}
reply(JSON.stringify(ret));
})
}
}
}
});
答案 0 :(得分:0)
查看hapijs tutorial后,您需要在创建服务器实例后定义端口。
server.connection({ port: 5000 });
答案 1 :(得分:0)
Hapi会将文件保存到您的目录中,因此您无需处理它。
const server = new Hapi.Server();
server.connection({
port: 5000
});
server.start(function () {
console.log('server running at: ' + server.info.uri);
});
const PATH_TO_UPLOADED_FILES = '...';
server.route({
method: 'POST',
path: '/upload',
config: {
payload: {
output: 'file',
uploads: PATH_TO_UPLOADED_FILES,
parse: true,
maxBytes: 209715200
},
handler: function (request, reply) {
// file path is at: request.payload.file.path
reply('thanks');
}
}
});