Comunidad de diseño web y desarrollo en internet online

Fallo al copiar un fichero

Citar            
MensajeEscrito el 07 Jun 2010 11:19 am
Hola, tengo un problema al intentar copiar un fichero mediante PHP. El error es el siguiente:

Warning: copy(../clientes/''//1275906169.pdf) [function.copy]: failed to open stream: No such file or directory in C:\AppServ\www\miweb\admin\upload2.php on line 38

La linea 38 se corresponde con copy($HTTP_POST_FILES['archivo']['tmp_name'], "$path/$nombre_archivo_n");

upload2.php contiene este código:

Código :

<?
require_once("../funciones.php");
// Llamamos a la función que se conecta a la base de datos
$link=conectar();

//Obtenemos el directorio del cliente
$sql = "SELECT * FROM CLIENTES WHERE ID LIKE '".$_POST["id"]."'";
$res=ejecutar($sql,$link);
$directorio = $res["URL"];

if ($HTTP_POST_FILES['archivo']['name']!="")
{
   //tomo el valor de un elemento de tipo texto del formulario 
   $cadenatexto = $_POST["nombre"];
   
   //datos del arhivo 
   $nombre_archivo = $HTTP_POST_FILES['archivo']['name']; 
   $tipo_archivo = $HTTP_POST_FILES['archivo']['type']; 
   $tamano_archivo = $HTTP_POST_FILES['archivo']['size']; 
   
   //subiremos el fichero con nombre del timestamp actual para que no haya dos ficheros con el mismo nombre
   $path="../clientes/'".$directorio."'/";
   $nombre_archivo_n = time();
   $nombre_archivo_n = $nombre_archivo_n.substr($nombre_archivo,strrpos($nombre_archivo,"."));
      
   if ($tamano_archivo > 300000000)
   { 
      echo "El tamaño de los archivos no es correcto. <br><br><table><tr><td><li>se permiten archivos de 3 MB máximo.</td></tr></table>"; 
   }
   else
   { 
      if (!is_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name']))
      {
         echo "Ocurrió algún error al subir el fichero. No pudo guardarse."; 
      } 
      else
      {
         copy($HTTP_POST_FILES['archivo']['tmp_name'], "$path/$nombre_archivo_n");
         
         // Realizamos el insert en la bbdd
         $sql = "INSERT INTO FICHEROS (IDCLIENTE,NOMBRE,FICHERO) VALUES ('".$_POST["id"]."','".$cadenatexto."','".$nombre_archivo_n."')";
         $res2 = ejecutar($sql,$link);
      }
   }
}
?>


A upload2.php le llegan tres variables por POST, id, nombre y archivo. Nombre es una cadena de texto que ha indicado el usuario y archivo es un fichero PDF seleccionado por el usuario en el formulario.

Por Perico19

39 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 07 Jun 2010 11:18 pm
Yo en lugar de utilizar HTTP_POST_FILES, utilizo uploaded_file, por ejemplo, en tu caso seria

Código :

...
if (is_uploaded_file($_FILES['archivo']['tmp_name'])){

...

//Cuando deseas mover el archivo cargado, seria
if (!is_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name']))
      {
         echo "Ocurrió algún error al subir el fichero. No pudo guardarse."; 
      } 
      else
      {

//En lugar de utilizar copy, utiliza move_uploaded_file
         move_uploaded_file($_FILES['archivo']['tmp_name'], $path."/".$nombre_archivo_n);
         ...

      }

}
..


Esta es mi opinion, espero que te sirva

Por softim

1 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.