我正在尝试将文件从桌面上传到在本地机器上运行的 Flask,而根本不使用 Web 表单。我查看了 BOTH Python Requests和Poster的示例。
这是我的 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()
这是我的 Python 脚本中使用Requests的代码
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
我最初认为 Flask 配置不正确,直到 curl 工作。我在 OS X 10.8.5 上运行并使用 virtualenv。任何帮助将不胜感激。提前致谢。