Hola a todos! Tengo el siguiente script para subir fotos y grabar los nombres de las mismas en una BDD. El problema es que al cargar varias fotos, a veces sube todas al servidor y a veces no. Los nombres de los archivos los graba perfectamente en la BDD.
Les muestro las 2 páginas que uso:
form.html
Código HTML:
<script type="text/javascript">
var numero = 0;
// Funciones comunes
c= function (tag) { // Crea un elemento
return document.createElement(tag);
}
d = function (id) { // Retorna un elemento en base al id
return document.getElementById(id);
}
e = function (evt) { // Retorna el evento
return (!evt) ? event : evt;
}
f = function (evt) { // Retorna el objeto que genera el evento
return evt.srcElement ? evt.srcElement : evt.target;
}
addField = function () {
container = d('file');
span = c('SPAN');
span.className = 'archivo';
span.id = 'archivo' + (++numero);
field = c('INPUT');
field.name = 'archivo[]';
field.type = 'file';
a = c('A');
a.name = span.id;
a.href = '#';
a.onclick = removeField;
a.innerHTML = 'Quitar';
span.appendChild(field);
span.appendChild(a);
container.appendChild(span);
}
removeField = function (evt) {
lnk = f(e(evt));
span = d(lnk.name);
span.parentNode.removeChild(span);
}
</script>
<form action="uploadok.php" method="post" enctype="multipart/form-data">
<label for="to"></label>
<label>Archivos Adjuntos:</label> <a href="#" onClick="addField()">Agregar Archivo</a>
<div id="file"></div>
<input type="submit" value="upload" id="archivo" name="archivo" />
<input type="hidden" name="action" value="upload" />
</form>
Y el archivo que recibe la info para subir al server y grabar los datos en la BDD:
uploadok.php
Código PHP:
//conexion a la db
include('conectar.php');
// conexion a la base
$conexion = mysql_connect($host_db, $usuario_db, $pass_db) or die ("no se ha podido conectar a la BD");
mysql_select_db($base_db, $conexion) or die ("no se ha podido seleccionar la BD");
if ($_POST["action"] == "upload") {
$i=0;
$tmpfile = $_FILES['archivo']['tmp_name'];
$imagen = $_FILES['archivo']['name'];
$usuario_db = "****";
$pass_db = "****";
$ftppath = "../prueba2/images/";
$ftpurl = "ftp://".$usuario_db.":".$pass_db."@".$ftppath;
//places files into same dir as form resides
foreach ($_FILES["archivo"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
echo"$error_codes[$error]";
move_uploaded_file(
$_FILES["archivo"]["tmp_name"][$key],
$_FILES["archivo"]["name"][$key]) or die("Ocurrio un problema al intentar subir el archivo.");
$imagen=$_FILES["archivo"]["name"];
echo "nombre de archivo:".$imagen[$i]."<br>";
mysql_query("INSERT INTO imagenes(imagen) VALUES ('$imagen[$i]') ", $conexion) or die ("Problemas al subir los archivos.");
$i++;
}
}
}
La verdad, no me tira error ni nada, y no entiendo por qué a veces sube todas las fotos y a veces no sube al server de a varias fotos a la vez.
¿Puede ser que el AJAX de la primer página esté causando esto? Sino, les agradecería me puedan orientar.
Gracias a todos y saludos. Marx.