Después de buscar por un tiempo, todavía estoy atascado y necesito ayuda.
Para un proyecto personal, necesito un formulario js donde se pide información y también una foto. Un script js permite seleccionar una parte de la foto y convierte la foto al tamaño y extensión correctos (primero cropper-js y después de la conversión de imagen). Con esto, tengo un archivo blob.
var params = new URLSearchParams(); params.append("data1", document.data1); params.append("data2", document.data2); params.append("data3", document.data3); params.append("data4", document.data4); params.append("blob", blob); const config = { headers: { "Content-Type": "multipart/form-data", }, }; axios.post(url_to_php_file, params, config).then((res) => { console.log(blob); } En console.log, puedo ver mi objeto blob (cambio de tamaño si cambio la foto) Blob {size: 49759, type: 'image/jpeg'}
Con php, inserto en mysql db
function fonctioninsert($table,$valeurs) { global $bdd; global $prefix_tables; $requete = 'INSERT INTO '.$prefix_tables.$table.'('; $i = 0; foreach ($valeurs as $key => $value) { if ($i != 0) { $requete .= ','; } $requete .= $key; $i++; } $i = 0; $requete .= ') VALUE ('; foreach ($valeurs as $key => $value) { if ($i != 0) { $requete .= ','; } $requete .= "'".$value."'"; $i++; } $requete .= ')'; $req = $bdd->prepare($requete); $req->execute(); //$req->closeCursor(); return $req; } $table = "table1"; unset($valeurs); $valeurs = array( "data1" => $_POST["data1"], "data2" => $_POST["data2"], "data3" => $_POST["data3"], "data4" => $_POST["data4"], "blob" => $_POST["blob"] ); fonctioninsert($table,$valeurs);El proceso inserta datos en db pero la columna blob (tipo LONGBLOB) sigue siendo la misma con 13 o. tamaño incluso si cambio la foto. Probé con $_FILE pero en este caso, no tengo nada en la columna de mysql blob.
Es como si php no recibiera nada y/o insertara un blob vacío en db.
¿Alguien sabe donde estoy fallando?
De hecho, el problema es con el apéndice. Antes de agregar, tengo un archivo blob pero después, tengo un archivo, luego el script PHP recibe un archivo y no puede insertarlo en una columna blob mysql. Como no puedo convertir el archivo a blob con php en mi servidor, finalmente opté por guardar archivos en lugar de mysql y funciona bien.