3

Web フォームをまったく使用せずに、デスクトップからローカル マシンで実行されている Flask にファイルをアップロードしようとしています。Python RequestsPosterの両方の例を見てきました。

これが私のFlask APIのコードです

from flask import Flask
from flask import request
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

@app.route('/upload', methods= ['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        f = request.files['files']
        f.save('/Users/djangod/newTest.txt')
        return '200'
    else:
        return 'Upload Page'

if __name__ == '__main__':
    app.debug = True
    app.run()

Requestsを使用した Python スクリプトのコードは次のとおりです。

import requests

url = "http://127.0.0.1:5000/upload"
files = {'file': open('/Users/djangod/text.txt', 'rb')}
r = requests.post(url, files=files)

エラー 400 が発生し、理由がわかりませんが、何らかの奇妙な理由でこの curl コマンドを実行すると機能します

curl -i -X POST -F files=@test.txt http://127.0.0.1:5000/upload

curlが機能するまで、最初はFlaskが正しく構成されていないと思っていました。OS X 10.8.5 で実行し、virtualenv を使用しています。どんな助けでも大歓迎です。前もって感謝します。

4

1 に答える 1