我在节点js中真的很新,而且在平板电脑上有点经验。我试图连接一个nodejs后端与烧瓶API。基本上我发送一个上传到nodejs应用程序中的文件,用于处理(转换为另一种格式)到我的烧瓶应用程序。
用于发送数据我正在使用请求。这样:
app.post('/converttest', uploader.single('file'), function(req,res){
var file = req.file,
result = {
error: 0,
uploaded: []
};
flow.exec(
function() { // Read temp File
fs.readFile(file.path, this);
},
function(err, data) { // Upload file to S3
var formData = {
file: data,
};
requestPack.post({url:'http://127.0.0.1:5000/api/resource/converter', formData: formData});
},
function(err, httpResponse, body) { //Upload Callback
if (err) {
return console.error('upload failed:', err);
}
res.redirect('/console');
});
});
然后我收到要在烧瓶应用程序中处理的文件,例如:
@app.route('/api/resource/converter', methods = ['POST','GET'])
def converter_csv():
if request.method == 'POST':
f = request.form['file']
if not f:
abort(400)
print('-----Converting-------')
file = open("temp/converting.txt","w")
file.write(f)
#....conversion process...
# Finish the process
return Response(converted_file,status=200)
在我的烧瓶应用程序本地主机的控制台中,我得到了:
127.0.0.1 - - [09 / Aug / 2017 15:47:59]" POST / api / resource / converter HTTP / 1.1" 200 -
但是我的nodejs应用程序没有收到任何响应。它刚冻结了。
我感谢任何人都可以给我的任何方向。谢谢。
答案 0 :(得分:0)
我认为flow.exec的顺序不正确
router.post('/converttest', uploader.single('file'), function(req, res) {
var filePath = req.file.path;
fs.readFile(filePath, 'utf8', function(err, data) { //change format reading as required
try {
formData = {file:data}
requestPack.post({url:'http://127.0.0.1:5000/api/resource/converter', formData: formData});
} catch(err) {
return console.error('upload failed:', err);
res.redirect('/console')
}
fs.unlink(filePath);}); });