En mi formulario.php
<form method="POST" enctype="multipart/form-data"> <input type="file" name="file_upload[]" id="file_upload" style="display:none;" required multiple accept="images/*" onchange="preview_image()"> </form>Y hay un botón de enviar a continuación.
En mi parte jquery
$('#submit').on('click', function(e) { var files = $('#file_upload')[0].files; var form_data = new FormData(); form_data.append("file_upload",files); $.ajax({ url:"execute/Script.php?request=submit", type: "POST", data: form_data, cache: false, contentType: false, processData: false, success: function(dataResult){ var dataResult = JSON.parse(dataResult); if(dataResult.statusCode == 1){ alert("Success!"); } } }); });Y en mi script.php
if($_GET['request']=="submit"){ $gallery_G = ""; foreach($_FILES['file_upload']['error'] as $key => $error){ if($error==UPLOAD_ERR_OK){ $tmp_name = $_FILES['file_upload']['tmp_name'][$key]; $PhotoName = $_FILES['file_upload']['name'][$key]; move_uploaded_file($tmp_name,"../img/properties/$name"); $gallery_G = $gallery_G.';'.$PhotoName; } } $sql = mysqli_query($conn,"INSERT INTO property(photos) VALUES('$gallery_G')"); if($sql) { echo json_encode(array("statusCode"=>1)); } else{ echo json_encode(array("statusCode"=>2)); } }Pero me devuelve esto:
Aviso : índice indefinido: file_upload en G:\Xampp\htdocs\execute\Script.php en la línea 31
Advertencia : argumento no válido suministrado para foreach() en G:\Xampp\htdocs\execute\Script.php en la línea 31
{"código de estado": 2}
¿Hay alguna solución? Necesito enviar esas fotos usando el método 'agregar'. Y necesito obtener esas fotos en 'Script.php' para poder procesarlas o cargarlas desde allí.
Intente pasar el elemento de formulario a FormData. No es necesario llamar al método append después.
var files = $('form')[0]; var form_data = new FormData(files); Al usar el método append(), está colocando un [object FileList] en la matriz $_POST debajo de la clave file_upload
Si solo desea los archivos del formulario, necesitaría un bucle:
var files = $('#file_upload')[0].files; var form_data = new FormData(); for (var i = 0; i < files.length; i++) { form_data.append("file_upload[]",files[i]); }