Foros del Web » Programando para Internet » PHP »

Upload de ficheros

Estas en el tema de Upload de ficheros en el foro de PHP en Foros del Web. Tengo este código para subir ficheros al servidor: Código PHP: <?   for( $i = 0 ;  $i  <  $_POST [ 'cant' ];  $i ++){ ...
  #1 (permalink)  
Antiguo 12/05/2004, 18:15
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 5 meses
Puntos: 1
Upload de ficheros

Tengo este código para subir ficheros al servidor:
Código PHP:
<?
 
for($i=0$i $_POST['cant']; $i++){
  
$rename "marxismo_".$_FILES['file']['name'][$i];
  if(
file_exists("/files/".$rename."")){
   echo 
"Por favor renombra tu fichero ".$_FILES['file']['name'][$i]." por que ya existe uno con ese nombre.";
  }else{
   
$dir "files/";
   
$extension explode(".",$_FILES['file']['name'][$i]);
   
$num count($extension)-1;
   
$total_bytes 0;
   if(
$extension[$num]=="zip" || $extension[$num]=="rar" || $extension[$num]=="jpeg" || $extension[$num]=="gif" || $extension[$num]=="png" || $extension[$num]=="bmp" || $extension[$num]=="doc" || $extension[$num]=="xls"){
    
$total_bytes $total_bytes $_FILES['file']['size'][$i];
    if(
$total_bytes 30000){
     
$subido move_uploaded_file($_FILES['file']['tmp_name'][$i], $dir.$rename);
    }
   }
  }
 }
 if(
$subido){
  echo 
"Los ficheros fueron subidos correctamente";
 }else{
  echo 
"Los ficheros no fueron subidos correctamente";
 }
?>
la cosa es que cuando subo un fichero, me lo sube bien, pero cuando intentó subir más de uno a la vez no me los copia en el server. Se que mi problema esta a la hora de que esta variable $_FILES['file']['name'][$i] tome sus valores pues no se porque razón me llega vacia.

Este es el codigo del form de donde viene la variable:
Código PHP:
<?
          
if(!isset($phase)){
           echo 
"<form action='uploadadmin.php?action=admin&phase=second' method='post' name='filesadmin' id='filesadmin'>
                 <table width='300' border='1' align='center' cellpadding='0' cellspacing='0' bordercolor='#98AAB1'>
                 <tr bgcolor='#BFCFE0'>
                 <td colspan='2' class='menutop'>Cantidad de ficheros a subir </td>
                 </tr>
                 <tr class='txtrg'>
                 <td width='325'>Cantidad de Ficheros a subir: </td>
                 <td width='169' class='txt'><input name='cantidad' type='text' id='cantidad' size='5' maxlength='5'></td>
                 </tr>
                 <tr>
                 <td colspan='2'><div align='center'>
                 <input name='next' type='submit' class='txtcn' id='next' value='Siguiente &gt;&gt;'>
                 </div></td>
                 </tr>
                 </table>
                 </form>"
;
          }elseif((isset(
$phase))&&($phase=="second")){
           echo 
"<form action='upload.php?action=admin&type=".$_SESSION['usertype']."&ses=".$_SESSION['sessionid']."&phase=upload' enctype='multipart/form-data' method='post' name='filesadmin' id='filesadmin'>
                 <table width='300' border='1' align='center' cellpadding='0' cellspacing='0' bordercolor='#98AAB1'>
                 <tr bgcolor='#BFCFE0'>
                 <td colspan='2' class='menutop'>Cantidad de ficheros a subir </td>
                 <input name='cant' type='hidden' id='cant' value='"
.$_POST['cantidad']."'>
                 </tr>"
;
                 
$var 0;
                 for(
$i=0;$i<$_POST['cantidad'];$i++){
                  
$var+=1;
                  echo 
"
                  <tr class='txtrg'>
                  <td width='325'>Fichero No. "
.$var.": </td>
                  <td width='169' class='txt'>
                  <input name="
.files[$i]." type='file' id='".files[$i]."'>
                  </td>
                  </tr>"
;
                 }
           echo 
"<tr>
                 <td colspan='2'><div align='center'>
                 <input name='next' type='submit' class='txtcn' id='next' value='Siguiente &gt;&gt;'>
                 </div></td>
                 </tr>
                 </table>
                 </form>"
;
          }
          
?>
Salu2
__________________
Ing. Reynier Pérez Mira

Última edición por Reynier; 12/05/2004 a las 18:48
  #2 (permalink)  
Antiguo 12/05/2004, 20:17
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 20 años, 6 meses
Puntos: 1
nombre del campo

-- concretamente en esta parte de tu código ---

for($i=0;$i<$_POST['cantidad'];$i++){
$var+=1;
echo "
<tr class='txtrg'>
<td width='325'>Fichero No. ".$var.": </td>
<td width='169' class='txt'>
<input name=".files[$i]." type='file' id='".files[$i]."'>
</td>
</tr>";

-- fin de tu código ---

generas filas en tu tabla, asi como inputs de acuerdo a lo que el usuario haya seleccionado como cantidad de archivos a enviar. Pero no entiendo que es files[$i], no sé si te equivocaste al teclear, pero le hace falta $ e inicializar el arreglo con valores, o no sé que intentaste hacer. Pero yo haría la siguiente modificación para no meterte en problemas...

-- tu código modificado ---

for($i=0;$i<$_POST['cantidad'];$i++){
$var+=1;
echo "
<tr class='txtrg'>
<td width='325'>Fichero No. ".$var.": </td>
<td width='169' class='txt'>
<input name=\"archivo".$i."\" type=\"file\" id=\"archivoId".$i."\">
</td>
</tr>";

-- fin de tu código modificado ---

asi ahora tienes por nombre para cada input file "archivo0", "archivo1", "archivo2" etc...

luego en tu proceso de recepción haces lo mismo que ya tienes, solo que ahora los archivos serán recibidos dentro del for algo así
$nombre = "archivo".$i;
$nombreArchivo = $_FILES[$nombre]['name'];
$temporal = $_FILES[$nombre]['tmp_name'];

etc... el proceso restante ya lo conoces, de hecho tu código aparenta estar bien, excepto por ese detalle a la hora de nombrar los inputs de HTML tipo file, ahi debe estar el error... saludos
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:04.