Php 如何在curl请求中发送json数据和文件以供Flask处理?

Php 如何在curl请求中发送json数据和文件以供Flask处理?,php,python,json,curl,flask,Php,Python,Json,Curl,Flask,问题: 我想发送一个带有-F选项的文件,以及带有-d的json数据到flask路由。但我只能实现这两种方法中的任何一种 我试过的代码 curl-X POST-H“内容类型:应用程序/json”-d'{“用户名”:“xyz”,“密码”:“xyz”}” 烧瓶代码: @app.route('/test',methods = ['GET', 'POST']) def test(): if request.method == 'POST': data = request.data data = j

问题:

我想发送一个带有
-F
选项的文件,以及带有
-d
的json数据到flask路由。但我只能实现这两种方法中的任何一种

我试过的代码

curl-X POST-H“内容类型:应用程序/json”-d'{“用户名”:“xyz”,“密码”:“xyz”}”

烧瓶代码:

@app.route('/test',methods = ['GET', 'POST'])
def test():
if request.method == 'POST':
    data = request.data
data = json.loads(data)
return 'success'
仅使用文件:

curl -X POST -F file=@sample.txt http://192.168.150.113/test
@app.route('/process' , methods = ['GET', 'POST'])
def process():
if request.method == 'POST':
    f = request.files['file']
if f:
    try:
filename = secure_filename(f.filename)
f.save( os.path.join(app.config['UPLOAD_FOLDER'], filename ))
return 'success'
但在不发送单独请求的情况下,我想结合这两个POST请求,并使用flask处理


有什么方法可以做到这一点吗?

使用-F选项通过
多部分/表单数据发送数据

curl -X POST -H "Content-Type: multipart/form-data" -F "file=@sample.txt" -F "username=xyz" -F "password=xyz" http://localhost:5000/test

您不能将带有json的文件一起发送,因为它们的内容类型不同。或者,您可以将json字符串化,并将其与
多部分/表单数据一起发送。例如,您可以发送
表单
,如下所示:

curl -X POST -H "Content-Type: multipart/form-data" -F "file=@sample.txt" -F "json_data='{\"username\":\"xyz\",\"password\":\"xyz\"}'" http://localhost:5000/test  
在python中,您可以通过
request.form.get(“json\u data”)
获得这个json。它比通过普通的
多部分/表单数据传递键值对更健壮,因为它支持更复杂的结构