我的应用程序有一个 python (bottle.py) 后端和一个 html/jquery 前端。我正在使用表单中的“输入”获取文本文件,并在后台使用 python 端的事件处理程序将其上传。然后事件处理程序解析文件(file.readline()
重复调用)并以 json 形式返回一些结果。
一切顺利,直到我需要在 python 中解析文件。
这是我的javascript:
function UploadFile() {
var file = $('#data')[0].files[0];
var formData = new FormData();
formData.append("file", file);
$.ajax({
url: 'plates',
type: 'POST',
data: formData,
cache: false,
contentType: false,
processData: false,
success: function(data){
...
}
});
}
当我在 python 端收到 POST 请求时,我只能使用request.body.read().decode()
. 如果我正在尝试request.files.data.file.read()
,我会收到“断管”错误:
socket.error: [Errno 32] Broken pipe
我可以用 获取文本request.body.read().decode()
,将它们保存到文件中,然后加载并解析。但是我想避免创建不需要创建的文件,并且想在内存中做所有事情。
为什么request.body.read().decode()
有效而request.files.data.file.read()
无效?有没有办法用我现有的函数解析文件而不将其写入磁盘?