我想通过post. request服务器将一个csv文件从node.js服务器流式传输到Flask应用程序。以下是生成请求的node.js代码:
// node.js route that handles form-based csv file upload
app.post('/route', upload.single('file'), function(req,res) {
var file = req.file;
// Streams file to Flask app API
fs.createReadStream(file).pipe(
request.post('http://localhost:5000/upload_dataset',
function(error, response, body){
console.log(body);
})
);
});
这是Flask请求处理程序:
@app.route('/upload_dataset', methods=['POST'])
def upload_dataset():
# Read from the request buffer and write it to a new file
with open(app.root_path + "/tmp/current_dataset", "bw") as f:
chunk_size = 4096
while True:
chunk = request.stream.read(chunk_size)
if len(chunk) == 0:
return
f.write(chunk)
return 'Some Response'
问题是当路由被命中时,len(chunk)为0,所以没有任何东西被写入。
Q1)请求的传输编码头是“chunked”类型。我听说wsgi没有处理“chunked”请求。这是导致我的问题的原因吗?如果是这样,那么现有实施的替代方案是什么?
Q2)request.stream似乎是空的。请求文件是否可能以请求对象的不同参数结束?如果是这样,哪一个?
否则,如果您发现代码有任何其他问题,请与我们联系。
感谢。