Python 邮递员发出的邮件请求有效,但不在瓶子中

Python 邮递员发出的邮件请求有效,但不在瓶子中,python,api,flask,python-requests,postman,Python,Api,Flask,Python Requests,Postman,假设api url为 已从邮递员应用发送一个POST请求,该请求已成功 附加文件(key=user\u image)是一个.jpg文件 在服务器端(): 但是,当我使用flask应用程序尝试post请求时,其中显示了一个表单以上载图像,然后将图像发送到api url,出现了一个错误 api_url = "https://34.35.36.37:8000/api" content_type = 'application/json' headers = {'Content-Type': con

假设api url为

已从邮递员应用发送一个POST请求,该请求已成功

附加文件(key=user\u image)是一个.jpg文件

在服务器端():

但是,当我使用flask应用程序尝试post请求时,其中显示了一个表单以上载图像,然后将图像发送到api url,出现了一个错误

api_url = "https://34.35.36.37:8000/api"
content_type = 'application/json' 
headers = {'Content-Type': content_type}

class UploadForm(FlaskForm):
    user_image = FileField('Upload an image',validators=[FileAllowed(['jpg', 'png', 'jpeg'], u'Image only!'), FileRequired(u'File was empty!')])
    submit = SubmitField('Submit')

@app.route('/', methods=['GET','POST'])
def predict():
    form = UploadForm()
    if form.validate_on_submit():
        payload = {}
        files = [
          ('user_image', form.data['user_image'])
        ]
        #response = requests.post(api_url, data={'user_image': form.data['user_image']}, headers=headers, verify=False)
        response = requests.request("POST", api_url, headers=headers, data = payload, files = files, verify=False)
        print(response.text)
        return 'some text'

     return render_template('index.html', form=form)
在服务器端选中时,执行行
print('check1')
,但不执行行
print('check2')

我认为错误在于以下两行,这两行涉及在post请求中将图像发送到api url

第1行:

files = [
              ('user_image', form.data['user_image'])
            ]
第2行:

response = requests.request("POST", api_url, headers=headers, data = payload, files = files, verify=False)
上面的代码对我有用。这相当于在“Body”部分中选择一个带有键“user\u image”的文件后,从邮递员处发送一个“POST”请求。请勿在post请求
response=requests.post(api\u url,files=files)中使用任何标题


在服务器端(api_url),可以通过
user\u image=request接收文件。files['user\u image']

看起来像
files
参数将数据作为流发送,您需要做更多的工作来上传文件。查看@gihanchanuka在@PGHE上的回答问题是邮递员使用文件位置读取文件'files={'user_image':open('C://file.jpg','rb')}。当使用flask表单或在POST请求中使用图像时,是否有办法做到这一点,我们是否无法使它在flask和postman中都工作?
response = requests.request("POST", api_url, headers=headers, data = payload, files = files, verify=False)
api_url = "https://34.35.36.37:8000/api"

class UploadForm(FlaskForm):
    user_image = FileField('Upload an image',validators=[FileAllowed(['jpg', 'png', 'jpeg'], u'Image only!'), FileRequired(u'File was empty!')])
    submit = SubmitField('Submit')

@app.route('/', methods=['GET','POST'])
def predict():
    form = UploadForm()
    if form.validate_on_submit():
        file_uploaded = request.files['user_image']
        files = {'user_image': (file_uploaded.filename, file_uploaded.read())}
        response = requests.post(api_url, files = files)
        return 'some text'

     return render_template('index.html', form=form)