Foros del Web » Programando para Internet » PHP »

upload multiple de fotos: no me suben algunas fotos al servidor

Estas en el tema de upload multiple de fotos: no me suben algunas fotos al servidor en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 11/05/2010, 11:14
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 11 meses
Puntos: 1
upload multiple de fotos: no me suben algunas fotos al servidor

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.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #2 (permalink)  
Antiguo 11/05/2010, 11:25
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 8 meses
Puntos: 105
Respuesta: upload multiple de fotos: no me suben algunas fotos al servidor

te recomiendo que uses otra programacion..... esa la vi una vez pero no me gusto.... ya que te aseguro que esa que usas esta colgada en algun lado de internet ^^

busca en san google y veras mejores y muy efectivas: http://www.google.com.pe/search?hl=e...=&oq=&gs_rfai=

por ejemplo la misma que ofrece PHP: http://php.net/manual/es/features.fi...d.multiple.php

o una de mi agrado que es con efectos de jquery: http://craftyman.net/uploadify-uploa...le-con-jquery/

Suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #3 (permalink)  
Antiguo 11/05/2010, 14:31
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 11 meses
Puntos: 1
Respuesta: upload multiple de fotos: no me suben algunas fotos al servidor

Gracias por la data. El ejemplo de jquery no me funcionó. Lo instalé tal cual y al presionar subir no hace nada.


Igual, si no es mucha molestia, quisiera saber cual es el problema del por qué no suben todos los archivos.

Gracias.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #4 (permalink)  
Antiguo 12/05/2010, 14:44
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 11 meses
Puntos: 1
Respuesta: upload multiple de fotos: no me suben algunas fotos al servidor

Bueno... a pesar de haber cambiado el código, sigo sin poder recoger el array de los archivos a subir al servidor. Cuando selecciono 2 o más archivos, el primero me lo sube pero el resto no.

Les muestro el nuevo código:

Formulario:
Código HTML:
<script language="javascript">
//var upload_number = 1;
function addFileInput() {
 	var d = document.createElement("div");
 	var file = document.createElement("input");
 	file.setAttribute("type", "file");
 	file.setAttribute("name", "attach[]");
 	d.appendChild(file);
 	document.getElementById("moreUploads").appendChild(d);
	file.onchange = setBlock;
	document.getElementById('moreLink').style.display = 'none';

// 	upload_number++;
}
function setBlock() {
   document.getElementById('moreLink').style.display = 'block';
}
</script>
</head>

<body>
<form action="images/uploadok.php" method="post" enctype="multipart/form-data">
<input type="file" name="attach[]" id="attach[]" onchange="setBlock();" />

<div id="moreUploads"></div>
<div id="moreLink" style="display:none;">
<a href="javascript:addFileInput();">Agregar otro Archivo</a>
</div>
<input type="submit" value="upload" id="attach" name="attach" />
<input type="hidden" name="action" value="upload" />
</form> 

Y este el upload:

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(isset(
$_FILES["attach"])) {
    
$tmpfile $_FILES["attach"]["tmp_name"];
    
$imagen $_FILES["attach"]["name"];
    
$usuario_db "***";
    
$pass_db "***";
    
$base_db "***";

    
$ftppath "../images/";
    
$ftpurl "ftp://".$usuario_db.":".$pass_db."@".$ftppath;

    
$total count($_FILES["attach"]["name"]);
    
    for (
$i 0$i $total$i++){

      
$tmpfile $_FILES["attach"]["tmp_name"][$i];
      
$tamano $_FILES['attach']['size'][$i];
      
$tamano_max="1048576";
      if(
$tamano <= $tamano_max){ 
          
move_uploaded_file($_FILES['attach']['tmp_name'][$i], $_FILES["attach"]["name"][$i]);
          
           
$imagen=$_FILES["attach"]["name"][$i];
           
           echo 
"nombre de archivo:".$imagen."<br>";
           
mysql_query("INSERT INTO imagenes(imagen) VALUES ('$imagen') "$conexion) or die ("Problemas al subir los archivos.");

      }else{
          echo 
"<div align = 'center'>La imagen que intenta grabar, excede el peso requerido. El maximo de peso es 500KB.</div>";
          echo 
"<br /><br /><br />";
          echo 
"<div align = 'center'><a href='javascript:history.back()'>&lt;&lt; Clic aqui para regresar.</div></a>";
      }
}


¿Me pueden decir por favor por qué solo me toma el primer archivo y los otros no?

Muchas gracias y saludos.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #5 (permalink)  
Antiguo 13/05/2010, 07:32
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 11 meses
Puntos: 1
Respuesta: upload multiple de fotos: no me suben algunas fotos al servidor

Bueno... no sé cual es el problema si los hay. Desde mi servidor de pruebas no suben todos los archivos que selecciono, pero lo probé desde la web y suben todos.

Qué se yo... cosas raras que pasan.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.

Etiquetas: fotos, upload, servidores
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 22:06.