Entiendo que esta pregunta se hace mucho, pero ninguna de las soluciones que he probado me ha funcionado y realmente agradecería alguna ayuda.
Quiero cargar una imagen para almacenarla en una base de datos, y usar Ajax para hacerlo es la mejor manera de hacerlo sin recargar mi página.
HTML
<div class="card"> <form method="POST" id="imgupload" action="" name="imgupload" enctype="multipart/form-data"> <input type="file" name="myimage" id="myimage"> <input type="button" id="doUpload" value="Upload" onclick="uploadImage()"> </form> </div>JS/JQuery
function uploadImage() { let = myData = new FormData(); let files = $('#myimage')[0].files; console.log("here >> "); console.log(files); if(files.length > 0 ) { myData.append('file',files[0]); $.ajax ({ url: 'config.php', type: 'post', data: {uploadImage: myData}, contentType: false, cache: false, processData: false, success: function(output) { console.log(output); console.log("----"); } }); }else { alert("Sorry, please choose a picture first!"); } };config.php
//function to upload an image if(isset($_POST['uploadImage']) && !empty($_POST['uploadImage'])) { $configMyDB->select_db($configDBName); $myImage = $_POST['uploadImage']; echo("<<"); echo($myImage); echo(">>"); }Tengo muchas otras funciones en mi PHP, así que sé que no hay problemas para conectarme a la base de datos.
Mi problema es que la llamada Ajax no tiene éxito y no tengo idea de por qué. Aquí está mi salida en el registro de la consola:
line:141 here >> line:142 FileList {0: File, length: 1} line:158 line:159 ----Me he estado rascando la cabeza durante las últimas dos horas en vano. Enviar una cadena devuelve el resultado adecuado. Supongo que tiene algo que ver con FormData, ya que $('#myimage')[0].files muestra la información correcta en el registro de la consola. Además, hacer un registro de consola de FormData me da una matriz realmente larga y fea, en la que no puedo encontrar la información de mi imagen.
Cualquier ayuda sería muy apreciada ya que mi fecha límite para esto se avecina. No tengo permitido usar ninguna biblioteca ni ninguna otra tecnología aparte de la que estoy usando actualmente.