Problema con informacion recibida en flask

Estimados estoy recibiendo eventos desde una cámara, esta información incluye un json y una imagen. Puedo obtener la información en json con el siguiente código:

@app.route(’/evento’, methods = [‘POST’])
def evento():
print (request.form.get(“faceCapture”))

pero no he podido obtener la imagen. Esta es la información que obtengo. Por favor su ayuda.

–boundary
Content-Disposition: form-data; name=“faceCapture”
Content-Type: application/json
Content-Length: 960

{ —informacion en json–}

–boundary
Content-Disposition: form-data
Content-Type: image/jpeg
Content-Length: 57882
Content-ID: faceImage

Buenas.

En flask te podes fijar si el archivo esta en la parte de requests.files.

Podes ver un ejemplo sobre este tema en la documentación de Flask: https://flask.palletsprojects.com/en/1.1.x/patterns/fileuploads/#uploading-files

Hola gracias por la respuesta. También estuve revisando requests.files, pero no llega nada.
Puede obtener información de la imagen a través de request.form.get(None)

pero este string no se como guardarlo ya que me da error al intenr guardarlo.

Revisando la información a través de wireshark veo lo siguiente:

Donde muestra que me están llegando 2 imágenes, pero sin nombre. viene a traves de Encapsulated multipart part: (image/jpeg)

Viendo el ejemplo de la documentación, el objeto es [request] (sin s final)(https://werkzeug.palletsprojects.com/en/1.0.x/wrappers/#werkzeug.wrappers.Requestt)

Por otro lado ¿probaste usando el ejemplo que está en la documentación pero modificado para tu caso de uso? Tomando el código que está en la doc:

@app.route('/', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        # check if the post request has the file part
        if 'file' not in request.files:
            flash('No file part')
            return redirect(request.url)
        file = request.files['file']
        # if user does not select file, browser also
        # submit an empty part without filename
        if file.filename == '':
            flash('No selected file')
            return redirect(request.url)
        if file and allowed_file(file.filename):
            filename = secure_filename(file.filename)
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))

En el código de ejemplo, filename = secure_filename( request.files['file'].filename) debería contener el archivo que estás recibiendo.

Hola ssebastianj si probé es pero tampoco funciono. Al final lo conseguí capturando todo con request.stream.read() y después lo separe utilizando el boundary que viene definido en la información(–boundary\r\n). No creo que sea la manera mas elegante ni eficiente, pero funciono. El código quedo asi:

@app.route(’/evento’, methods = [‘POST’])
def evento():
data4 = request.stream.read()
### parametro limite entre informacion
boundary="–boundary\r\n".encode()
### extracion de imagen
imagen=data4.split(boundary)[2]
imagen=imagen.split("\r\n\r\n".encode())[1]
### extracion json
tipo=data4.split(boundary)[1]
tipo=tipo.split("\r\n\r\n".encode())[1]
listado=tipo.decode()
## usar uid para nombre
nombre=json.loads(listado)[‘uid’]
### guardar imagen e informacion
f = open(“informacion/”+str(nombre)+".jpg", “wb”)
f.write(imagen)
f.close()
g = open(“informacion/”+str(nombre)+".txt", “wb”)
g.write(tipo)
g.close()
return ‘Recibido’
app.run(host=‘0.0.0.0’, port= 8001)