私のアプリには、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()
機能しないのですか?ファイルをディスクに書き込まずに、既存の関数でファイルを解析する方法はありますか?