это мой клиентский код:
Код: Выделить всё
from plyer import filechooser
import os
import requests
def selected(selection):
try:
source = selection[0]
nom_image = os.path.basename(source)
url = 'http://127.0.0.1:5000/upload'
files = {'image': (nom_image, open(source, 'rb'))}
data = {'fk_id': 1}
response = requests.post(url, files=files, json=data)
if response.status_code == 200:
print('Fichier envoyé avec succès.')
else:
print(f"Erreur lors de l'envoi du fichier : {response.text}")
except Exception as e:
print(f"Erreur : {str(e)}")
filechooser.open_file(on_selection=selected)Это код моего сервера с использованием FLASK:
Код: Выделить всё
from flask import Flask, request, jsonify, send_file
import os
from werkzeug.utils import secure_filename
import sqlite3
app = Flask(__name__)
#Répertoire où stocker les images et fichiers sur le serveur
UPLOAD_FOLDER = 'uploads'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
#Vérifier si le repertoire d'upload exist, sinon, le créer
if not os.path.exists(UPLOAD_FOLDER):
os.makedirs(UPLOAD_FOLDER)
@app.route('/upload', methods = ['POST'])
def upload_file():
try:
#récupérer le fichier depuis la requete du client
uploaded_file = request.files['image']
idd = request.files['id']
print(idd)
print(uploaded_file)
data = request.json
fk_id = data.get('fk_id')
#Sécuriser le nom du fichier pour éviter des problemes de sécurité
filename = secure_filename(uploaded_file.filename)
#Enregistrer le fichier dans le répertoire spécifié sur le serveur
file_path = os.path.join(app.config['UPLOAD_FOLDER'], filename)
uploaded_file.save(file_path)
#Enregistrer dans la base de donnée
conn = sqlite3.connect('mabase.sqlite3')
cur = conn.cursor()
req = "INSERT INTO Image (nom, lien, fk_id) VALUES(?, ?, ?)"
valeur = (uploaded_file.filename, file_path, fk_id)
cur.execute(req, valeur)
conn.commit()
return jsonify({'message': 'File uploaded successfully', 'file_path': file_path}), 200
except Exception as e:
return jsonify({'error': f'Error uploading file: {str(e)}'}), 500это ошибка, которую я получаю на стороне клиента, когда добавляю еще один json параметр функции запроса:
Error lors de l'envoi du fichier : {
"error": "Ошибка при загрузке файла: 400 Неверный запрос: браузер (или прокси-сервер) отправил запрос, который этот сервер может не понимаю."
Вот такая ошибка на стороне сервера:
127.0.0.1 - - [14/Март/2024 10:36:26 ] "POST /upload HTTP/1.1" 500 -
пожалуйста, помогите мне с правильным методом
Источник: https://stackoverflow.com/questions/781 ... -rest-serv