Foros del Web » Programando para Internet » PHP »

Problema con uploader de archivos.

Estas en el tema de Problema con uploader de archivos. en el foro de PHP en Foros del Web. ¡Hola a todos! Tengo un problema con un uploader de archivos, quizás es con la función copy(). Si pudieran decirme si hay algún fallo... Es ...
  #1 (permalink)  
Antiguo 30/09/2010, 05:42
 
Fecha de Ingreso: septiembre-2009
Mensajes: 210
Antigüedad: 15 años, 2 meses
Puntos: 19
Problema con uploader de archivos.

¡Hola a todos!

Tengo un problema con un uploader de archivos, quizás es con la función copy().
Si pudieran decirme si hay algún fallo...
Es un script modificado por mi.

Saludos.

Código PHP:
Ver original
  1. <?php include('../conectar.php');
  2.  
  3. if($_COOKIE['rol'] != "1" && $_COOKIE['user'])
  4. {?>
  5.  
  6. <?php
  7. $status = "";
  8. if ($_POST["action"] == "upload") {
  9.     // obtenemos los datos del archivo
  10.     $tamano = $_FILES["archivo"]['size'];
  11.     $tipo = $_FILES["archivo"]['type'];
  12.     $archivo = $_FILES["archivo"]['name'];
  13.     $prefijo = substr(md5(uniqid(rand())),0,6);
  14.    
  15.     if ($archivo != "") {
  16.         // guardamos el archivo a la carpeta files
  17.         $destino =  "/subir/files/".$prefijo."_".$archivo;
  18.         if (copy($_FILES['archivo']['name'],$destino)) {
  19.             $status = "Archivo subido: <b>".$archivo."</b>";
  20.             $nombre = $prefijo."_".$archivo;
  21.             $sqlinsertdoc = mysql_query("INSERT INTO docs (nombre)
  22.                                    VALUES ('$nombre')")
  23.                                     or die(mysql_error());
  24.         } else {
  25.             $status = "Error al subir el archivo";
  26.         }
  27.     } else {
  28.         $status = "Error al subir archivo";
  29.     }
  30. }
  31. ?>
  32. <html>
  33. <head>
  34. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  35. <title>PDF Upload</title>
  36. <link href="estilo.css" rel="stylesheet" type="text/css" />
  37. </head>
  38. <body>
  39. <table width="413" border="0" cellspacing="0" cellpadding="0">
  40.   <tr>
  41.     <td width="413" height="40" class="titulo">PDF upload</td>
  42.   </tr>
  43.   <tr>
  44.     <td class="text">Por favor seleccione el archivo a subir:</td>
  45.   </tr>
  46.   <tr>
  47.   <form action="upload.php" method="post" enctype="multipart/form-data">
  48.     <td class="text">
  49.       <input name="archivo" type="file" class="casilla" id="archivo" size="35" />
  50.       <input name="enviar" type="submit" class="boton" id="enviar" value="Upload File" />
  51.       <input name="action" type="hidden" value="upload" />    </td>
  52.     </form>
  53.   </tr>
  54.   <tr>
  55.     <td class="text" style="color:#990000"><?php echo $status; ?></td>
  56.   </tr>
  57.   <tr>
  58.     <td height="30" class="subtitulo">Listado de Archivos Subidos </td>
  59.   </tr>
  60.   <tr>
  61.     <td class="infsub">
  62.     <?php
  63.     if ($gestor = opendir('files')) {
  64.         echo "<ul>";
  65.         while (false !== ($arch = readdir($gestor))) {
  66.            if ($arch != "." && $arch != "..") {
  67.                echo "<li><a href=\"/subir/files/".$arch."\" class=\"linkli\">".$arch."</a></li>\n";
  68.            }
  69.         }
  70.         closedir($gestor);
  71.         echo "</ul>";
  72.     }
  73.     ?>  </td>
  74.   </tr>
  75. </table>
  76. <?php } ?>
  77. </body>
  78. </html>

EDITO:

El error que me marca es el siguiente:
Warning: copy(nombre_del_archivo) [function.copy]: failed to open stream: No such file or directory in /home/ampaciam/domains/ampaciamaria.es/public_html/subir/upload.php on line 18
  #2 (permalink)  
Antiguo 30/09/2010, 05:53
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: Problema con uploader de archivos.

A ver así:

Código PHP:
<?php include('../conectar.php'); 
 
if(
$_COOKIE['rol'] != "1" && $_COOKIE['user'])
{
?>
 
<?php 
$status 
"";
if (
$_POST["action"] == "upload") {
    
// obtenemos los datos del archivo 
    
$tamano $_FILES["archivo"]['size'];
    
$tipo $_FILES["archivo"]['type'];
    
$archivo $_FILES["archivo"]['name'];
    
$prefijo substr(md5(uniqid(rand())),0,6);
    
    if (
$archivo != "") {
        
// guardamos el archivo a la carpeta files
        
$destino =  "/subir/files/".$prefijo."_".$archivo;
        if (
move_uploaded_file($_FILES['archivo']['name'],$destino)) {
            
$status "Archivo subido: <b>".$archivo."</b>";
            
$nombre $prefijo."_".$archivo;
            
$sqlinsertdoc mysql_query("INSERT INTO docs (nombre)
                                    VALUES ('$nombre')"
)
                                    or die(
mysql_error());
        } else {
            
$status "Error al subir el archivo";
        }
    } else {
        
$status "Error al subir archivo";
    }
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>PDF Upload</title>
<link href="estilo.css" rel="stylesheet" type="text/css" />
</head>
<body>
<table width="413" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="413" height="40" class="titulo">PDF upload</td>
  </tr>
  <tr>
    <td class="text">Por favor seleccione el archivo a subir:</td>
  </tr>
  <tr>
  <form action="upload.php" method="post" enctype="multipart/form-data">
    <td class="text">
      <input name="archivo" type="file" class="casilla" id="archivo" size="35" />
      <input name="enviar" type="submit" class="boton" id="enviar" value="Upload File" />
      <input name="action" type="hidden" value="upload" />    </td>
    </form>
  </tr>
  <tr>
    <td class="text" style="color:#990000"><?php echo $status?></td>
  </tr>
  <tr>
    <td height="30" class="subtitulo">Listado de Archivos Subidos </td>
  </tr>
  <tr>
    <td class="infsub">
    <?php 
    
if ($gestor opendir('files')) {
        echo 
"<ul>";
        while (
false !== ($arch readdir($gestor))) {
           if (
$arch != "." && $arch != "..") {
               echo 
"<li><a href=\"/subir/files/".$arch."\" class=\"linkli\">".$arch."</a></li>\n";
           }
        }
        
closedir($gestor);
        echo 
"</ul>";
    }
    
?>  </td>
  </tr>
</table>
<?php ?>
</body>
</html>
2 salu2
  #3 (permalink)  
Antiguo 30/09/2010, 07:46
 
Fecha de Ingreso: septiembre-2009
Mensajes: 210
Antigüedad: 15 años, 2 meses
Puntos: 19
Respuesta: Problema con uploader de archivos.

Muchas gracias, se arregló el error que puse, pero ahora simplemente me dice "Error al subir el archivo"
  #4 (permalink)  
Antiguo 30/09/2010, 10:07
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 7 meses
Puntos: 101
Respuesta: Problema con uploader de archivos.

Si te dice eso es porque no se está evaluando bien este condicional:

if ($_POST["action"] == "upload") {

o este otro:

if (move_uploaded_file($_FILES['archivo']['name'],$destino))

Para comprobar el segundo, hace una impresion en pantalla de esto para chequear que está bien la ruta:

echo $destino;

Y no utilices un mismo mensaje para dos errores distintos porque dificulta el debug! "Error al subir archivo";

Por otro lado, es importante que chequees si realmente hay un archivo subido aquí: $_FILES['archivo']

Esto último suele hacerse, por ejemplo, así:

Código PHP:
Ver original
  1. if(!isset ($_FILES["foto"]) || !is_uploaded_file($_FILES['foto']['tmp_name']) )

En el ejemplo, "foto" tiene que corresponderse con el atributo name del <input type="file">

(o "archivo" en tu caso)

Etiquetas: uploader
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 16:28.