Предположим, что api url равен https://34.35.36.37: 8000 / api
Отправлено POST-запрос из приложения почтальона, которое успешно ![enter image description here](https://i.stack.imgur.com/j0OIj.png)
![enter image description here](https://i.stack.imgur.com/SWvZR.png)
Прикрепленный файл (ключ = user_image) представляет собой файл .jpg
На стороне сервера (https://34.35.36.37: 8000 / api ):
@app.route('/api', methods=['POST'])
def api():
print("check1")
user_image = request.files['user_image']
print("check2")
return "some text"
Но когда я пытаюсь отправить запрос с помощью приложения flask, в котором отображается форма для загрузки изображения, которое затем отправляется на URL-адрес API, возникает ошибка
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')
не выполняется.
Я думаю, что ошибка в следующих 2 строках, которые включают отправку изображения на URL-адрес API в запросе на публикацию
Строка1:
files = [
('user_image', form.data['user_image'])
]
Строка2:
response = requests.request("POST", api_url, headers=headers, data = payload, files = files, verify=False)