以下を使用してフラスコサーバーにファイルを投稿するときに生のHTMLを使用すると、フラスコリクエストグローバルからファイルにアクセスできます。
<form id="uploadForm" action='upload_file' role="form" method="post" enctype=multipart/form-data>
<input type="file" id="file" name="file">
<input type=submit value=Upload>
</form>
フラスコ内:
def post(self):
if 'file' in request.files:
....
Axiosで同じことを行おうとすると、フラスコリクエストグローバルが空になります。
<form id="uploadForm" enctype="multipart/form-data" v-on:change="uploadFile">
<input type="file" id="file" name="file">
</form>
uploadFile: function (event) {
const file = event.target.files[0]
axios.post('upload_file', file, {
headers: {
'Content-Type': 'multipart/form-data'
}
})
}
上記と同じuploadFile関数を使用して、ヘッダーjsonをaxios.postメソッドから削除した場合、フラスコリクエストオブジェクトのフォームキーに文字列値のcsvリストを取得します(ファイルは.csv)。
どうすればaxios経由で送信されたファイルオブジェクトを取得できますか?
@Nikleshはい、タイプミスのカットアンドペーストで修正しました。コードに二重引用符が含まれています。
—
Don Smythe 2017年
タグの代わりに試し
—
Niklesh Raut 2017年
v-on:change="uploadFile"
ましたか?input
form
@Niklesh同じ結果が得られます-データは文字列として送信され、フラスコ内のrequest.filesではなくrequest.formによって取得されます。
—
Don Smythe 2017年