Tuve problemas al intentar pasar valores de entrada de HTML a Flask. Usé javascript y FormData para pasar varias imágenes a la función Flask.
Aquí está el HTML:
<form> <input id="imagesInp" type="file" name="imagesInp" class="input-button" onchange="readUrl(this)" multiple /> </form> <button name="images-btn" id="imagesbutton" class="submit-detect-btn">Detect</button>Aquí está la parte js:
$("#imagesbutton").click(() => { imagebox = $("#imagebox"); link = $("#link"); input = document.getElementById('imagesInp'); console.log(input.files); if (input.files && input.files[0]) { var formData = new FormData(); for (let i = 0; i < input.files.length; i++) { formData.append("images", input.files[i]); } formData.forEach((value, key) => { console.log("key %s: value %s", key, value); }); $.ajax({ url: "/detect-images", // fix this to your liking type: "POST", data: formData, cache: false, processData: false, contentType: false, error: function (data) { console.log("upload error", data); console.log(data.getAllResponseHeaders()); }, success: function (data) { console.log(data); // $("#detectedimg").attr("src", "/detected/" + encodeURIComponent(data)); // $("#link").css("visibility", "visible"); // $("#download").attr("href", "static/images/" + data); console.log(data); }, }); } });Aquí está el frasco:
@app.route("/detect-images", methods=['POST']) def detect_images(): if not request.method == "POST": return images = request.files.getlist('images') print(images) for img in images: img.save(os.path.join(uploads_dir, secure_filename(img.filename))) name = img.filename return nameUsé la misma estructura al cargar una sola imagen, funcionó bien. Pero aquí, cuando hago clic en el botón, las imágenes de entrada se pueden pasar a formData, se muestran en el archivo console.log. Pero en la parte de ajax, los datos parecen no pasarse a la función Flask. Y no hay errores, ni mensajes /post, como si no hubiera hecho clic en el botón.
No importa el valor de retorno, voy a completar toda la función más tarde, ahora solo quiero asegurarme de que los datos se puedan cargar en el directorio correctamente.
¡Muchas gracias si pudieras ayudarme!