同じリクエストでファイルとそのファイル名をangleでアップロード(投稿)しようとしていて、それをFlaskで受け取り、ディスクに書き込もうとしています。AngularJSとFlaskの同じリクエストでバイナリファイルと名前を投稿する
reader.readAsArrayBuffer(importData.ruleFile.files[0]);
httpリクエストは、次のとおりです:ファイルが使用してローカルディスクから読み出され
$http({
url: baseUrlService.baseURL + 'importtifile',
method: 'POST',
headers: {'Content-Type': undefined},
data: {
filename: importData.ruleFileName,
// filedata: new DataView(reader.result)
// filedata: reader.result
filedata: new Uint8Array(reader.result)
},
transformRequest: function (data, headersGetter) {
var formData = new FormData();
formData.append('filename', data.filename);
formData.append('filedata', data.filedata);
return formData;
}
}).then(
...
、フラスコの一部です:
@api.route('/importfile', methods=['POST'])
def import_file():
file_name = request.form['filename']
file_data = request.form['filedata']
f = NamedTemporaryFile(delete=False)
f.write(file_data)
f.close()
問題は次のとおりです。
とき私は新しいDataView(reader.result)として角度からファイルを送信します。私は新しいUint8Array(reader.result)サーバは単なる文字列が含まれている書き込みファイルとして送信する場合
[オブジェクトのDataView]
:サーバーは1つの文字列が含まれて書き込みます:
[Uint8Arrayオブジェクト]
どのように私は実際ダを得ることができます転送されますか?
ファイルreadAsBinaryStringを読み込もうとしましたが、その場合、サーバー側に書き込まれたファイルは元の約2倍の大きさです。
ご協力いただきありがとうございます。