Comunidad de diseño web y desarrollo en internet online

Problemas al subir archivos

Citar            
MensajeEscrito el 30 May 2011 02:19 pm
Hola intento subir archivos, con php pero no tengo idea de que ocurre, no funciona. bueno tengo el wampserver, y el scrip que encontre en internet parece tener algo mal. es este:

Código PHP :

 <?php
if($boton) { 
    if (is_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'])) { 
      copy($HTTP_POST_FILES['archivo']['tmp_name'], $HTTP_POST_FILES['archivo']['name']); 
      $subio = true; 
    } 

if($subio) { 
    echo "El archivo subio con exito"; 
} else { 
    echo "El archivo no cumple con las reglas establecidas"; 
} 
die(); 
} 
?>

            <form action="<?=$PHP_SELF?>" method="post" enctype="multipart/form-data" name="form1"> 
  <p align="center">Archivo 
   <input name="archivo" type="file" id="archivo"> 
  </p> 
  <p align="center"><input name="boton" type="submit" id="boton" value="Enviar"></p> 
</form>


En mi casa con el wamp server me envia un mensaje que dice que no tengo permisos, para la carpeta donde quiero subir, y en el servidor del trabajo no envia ningun mensaje, ni despliega los echos de si ya se subio el archivo o no, y no sube el archivo.

En cuanto a el mensaje de que me despliega en el WAMPserver, ya intente aplicarle chmod a la carpeta con los permisos 0777 pero nada.
Que ocurree?? que puedo hacer para que funcione o que estoy haciendo mallll

Por rod00x3

Claber

595 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 30 May 2011 03:00 pm
Cambia:

Código PHP :

$HTTP_POST_FILES['archivo']['tmp_name'])

por:

Código PHP :

$_FILES['imagen']['tmp_name']

Por De_la_Cuesta_13

Claber

103 de clabLevel



 

chrome
Citar            
MensajeEscrito el 30 May 2011 03:06 pm
ese script esta obsoleto , las variables que usas tienes que llamarlas de distinta forma, a y los permisos 0777 en algunos hosting producen error te sugiero el 755 en su lugar
y lee los comentarios que puse :)

Código PHP :

<?php
//lsa varibales de formulario se recuperan por _POST o _GET depende del formulario
//if($_POST['boton'])
//eso te producira un error del tipo E_NOTICE por que esa variable no existe,
//aun asi que verificamos primero la existencia con isset
if(isset($_POST['boton']))
{  
    if (is_uploaded_file($_FILES['archivo']['tmp_name']))
   {
      //deberias declarar la ruta donde se copiara el archivo
      copy($_FILES['archivo']['tmp_name'], $_FILES['archivo']['name']);  
     //si realmente copio baria que verificarlo
     if(file_exists($_FILES['archivo']['name']))
     {
         echo "se copio el archivo en el siguiente destino:" . realpath($_FILES['archivo']['name']);
         $subio = true; 
      }
     else
     {
         $subio = false;
     }
      
    }  
 
   if($subio)
   {  
      echo "El archivo subio con exito";  
   }
   else
   {  
      echo "El archivo no cumple con las reglas establecidas";  
   }  
   die();  
}  
?>
 
 
<form action="<?=$PHP_SELF?>" method="post" enctype="multipart/form-data" name="form1">  
   <p align="center">Archivo  
      <input name="archivo" type="file" id="archivo">  
   </p>  
   <p align="center">
      <input name="boton" type="submit" id="boton" value="Enviar">
   </p>  
</form>

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 30 May 2011 03:39 pm
También es siempre buena idea controlar el código de error que devuelve el servidor cuando se suben archivos.

El array $_FILES incluye un campo que contiene el número de error que se encontró:

Código PHP :

  $error_code = $_FILES['archivo']['error'];


Si $error_code es igual a cero, no hubo problemas y solo en ese caso debería intentarse mover el archivo temporal al directorio final, caso contrarios se debería mostrar un mensaje apropiado.

Usando el código de tuadmin (que por lo demás es correcto):

Código PHP :

<?php /* Función que traduce el código de error a su mensaje correspondiente. (Los mensajes deberían estar en UTF-8).  */
function FileUploadErrorMsg($error_code) {
    switch ($error_code) { 
        case UPLOAD_ERR_INI_SIZE: 
            return $error_code." El archivo es m&aacute;s grande que lo permitido por el Servidor."; 
        case UPLOAD_ERR_FORM_SIZE: 
            return $error_code." El archivo subido es demasiado grande."; 
        case UPLOAD_ERR_PARTIAL: 
            return $error_code." El archivo subido no se termin&oacute; de cargar (probablemente cancelado por el usuario)."; 
        case UPLOAD_ERR_NO_FILE: 
            return $error_code." No se subi&oacute; ning&uacute;n archivo"; 
        case UPLOAD_ERR_NO_TMP_DIR: 
            return $error_code." Error del servidor: Falta el directorio temporal."; 
        case UPLOAD_ERR_CANT_WRITE: 
            return $error_code." Error del servidor: Error de escritura en disco"; 
        case UPLOAD_ERR_EXTENSION: 
            return $error_code." Error del servidor: Subida detenida por la extenci&oacute;n";
      default: 
            return "Error del servidor: ".$error_code; 
    } 
} // FileUploadErrorMsg;

//lsa varibales de formulario se recuperan por _POST o _GET depende del formulario 
//if($_POST['boton']) 
//eso te producira un error del tipo E_NOTICE por que esa variable no existe, 
//aun asi que verificamos primero la existencia con isset 
if(isset($_POST['boton'])) {
   $msgerr = "";
   $error_code = $_FILES['archivo']['error'];
   if ($error_code == 0) {
      if (is_uploaded_file($_FILES['archivo']['tmp_name'])) { 
         //deberias declarar la ruta donde se copiara el archivo 
         copy($_FILES['archivo']['tmp_name'], $_FILES['archivo']['name']);   
         //si realmente copio baria que verificarlo 
         if(file_exists($_FILES['archivo']['name'])) { 
            $msgerr = "se copio el archivo en el siguiente destino:" . realpath($_FILES['archivo']['name']); 
         } else {
            $msgerr = "El archivo no se pudo mover al directorio final.";
         }
      } else {
         $msgerr = "El archivo no existe en los temporarios.";
      }
   } else {
      $msgerr = FileUploadErrorMsg($error_code);
   }
   echo $msgerr;
   die();   
}   
?>
 
  
  
<form action="<?=$PHP_SELF?>" method="post" enctype="multipart/form-data" name="form1">   
   <p align="center">Archivo   
      <input name="archivo" type="file" id="archivo">   
   </p>   
   <p align="center"> 
      <input name="boton" type="submit" id="boton" value="Enviar"> 
   </p>   
</form> 


Otras cosas que se podrían hacer para mejorar la seguridad es controlar que no te suban cualquier cosa. Tal como está el código, es fácil subir un archivo .php y luego ejecutarlo. Imagina las consecuencias de eso :P

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 30 May 2011 07:30 pm
wuuuawww gracias... por toda la informacion, me permiten usar su codigo con algunas modificaciones para probar el funcionamiento??

Por rod00x3

Claber

595 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 30 May 2011 08:54 pm
Para eso lo posteamos... digo, ¿no? ;)

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 30 May 2011 09:22 pm
una duda donde puedo encontrar todas las variables de $_file, para eso de verificar el nombre, el tamaño y todas esas cosas. Me gustaria conocer todas las limitaciones que se puede hacer con ese arreglo.

Por rod00x3

Claber

595 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 30 May 2011 09:39 pm
pues leete el manual de la funcion

http://es2.php.net/manual/es/reserved.variables.files.php

o si tienes dudas de algunas funciones pues al momento de subir algo hazle un dump

Código PHP :

var_dump($_FILES);

el limite que le veo es ver el progreso del archivo :) pero hay forma de simular eso, ya sea con ajax, flash , perl, y extensiones con APC

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 31 May 2011 01:43 pm
funciona perfecto graCIAS

Por rod00x3

Claber

595 de clabLevel



Genero:Masculino  

msie

 

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