Nó queiro un framwork de upload hací que tome de varias partes código y lo organicé.
Cuando subo el primer(1) archivo lo sube normal, bien, pero al segundo(1) me suben 2y despues me suben el doble, eltriple y hací sucesivamente.
He tratado toda la tarde de encontrar el error pero no he podido del porque se buggea despues de la segunda subida:
el html:
Código HTML:
script.js:Ver original
Código Javascript:
y del lado del cliente upload.php:Ver original
$(document).on('ready', function(){ var formData = false; var MAX_WIDHT = 200, MAX_HEIGHT = 200; function handleImageSelect(src, thefile, output){ console.log('llegue a handleimagselect'); var span = document.createElement('span'); span.innerHTML = ['<img class="thumb" src="', src, '" width="100" height="100" />'].join(''); document.getElementById('thumbnail').insertBefore(span, null); //hacemos las miniaturas. output.push('<li><strong>', escape(thefile.name), '</strong> (', thefile.type || 'n/a', ') -', thefile.size, '</li>'); document.getElementById('list').innerHTML = '<ul>' + output.join('') + '</ul>'; } function handleFileSelect(evt){ var output = []; $('#thumbnail').children().remove(); if(window.FormData){ formData = new FormData(); } var files = evt.target.files; // FileList object document.getElementById('response').innerHTML ='Cargando imagenes.'; for(var i = 0, f; f = files[i]; i++){ //solo procesa iamgenes. if (!f.type.match(/image.*/)) { alert('El archivo no corresponde al tipo de una imagen.'); continue; } if(window.FileReader){ var reader = new FileReader(); //capturamos la informacion. reader.onload = (function(thefile){ return function(e) { handleImageSelect(e.target.result, thefile, output); }; })(f); reader.readAsDataURL(f); formData.append('pic[]', f); var ced = $('#inputCedID').val(); document.getElementById('subir').addEventListener('click', function(){ $.ajax({ url: 'upload.php', type: 'POST', data: formData, processData: false, contentType: false, beforeSend: function() { console.log("formData === " + formData); console.log(formData); document.getElementById('response').innerHTML = '<img src="cargando.gif" height="30">'; }, complete: function(xhr, res){ console.log('la llamada fue: ' + res); }, success: function(res){ document.getElementById('response').innerHTML = res; console.log('respuesta: ' + res); }, error: function (xhr, ajaxOptions, thrownError) { console.log('error: ' + xhr.status); console.log('error2: ' + thrownError); } }); }); } else{ console.log('Su navegador no soporta window.FileReader'); } } } document.getElementById('pic').addEventListener('change', handleFileSelect, false); });
Código PHP:
Ver original
<?php include('../conexion.php'); echo "<br>count: ". $count .".</br>"; function tipoImgen($file){ return $img; } return false; } for($i = 0; $i < $count; $i++) { echo '<div class="resultUploadImg">'; if(tipoImgen($_FILES['pic']['tmp_name'][$i])){ //Obtiene name del file y asigna uno nuevo $fileName = $_FILES['pic']['name'][$i]; $tmp_name = $_FILES['pic']['tmp_name'][$i]; $newdir = "BDimg/"; $ext = $destruye[1]; //obtenemos el ultimo ID en la BD $result = $mysqli->query("SELECT MAX(id) AS id FROM imagenes"); $row = $result->fetch_array(MYSQLI_ASSOC); $id = $row['id']; $nombre = $id + 1; //_____________________________________________________________ echo "<br>ultimo id DataBase: ". $id."</br>"; echo "<br>nuevo nombre: ".$nombre."</br>"; $nombreN = $nombre.'.'.$ext; $nombrefinal = $newdir.$nombre.'.'.$ext; //_____________________________________________________________ //mueve el archivo a su ruta final echo '<br>Image: '.$nombre.'.'.$ext.' quedo guardado en BDimg/'.$nombreN.'<br />'; //insertamos los datos al DB $result2 = $mysqli->query("INSERT INTO imagenes (ruta) VALUES ('$nombrefinal')"); $ultimoID = $mysqli->insert_id; echo "<br>ultimoID = " . $ultimoID."</br>"; //_____________________________________________________________ } else { echo "no se ha podido mover"; } //_____________________________________________________________ } } echo "</div>"; } ?>