• Viernes 8 de Noviembre de 2024, 20:14

Autor Tema:  Empezando en PHP, ¿ Archivos ?  (Leído 1512 veces)

kurtjavier

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Empezando en PHP, ¿ Archivos ?
« en: Viernes 21 de Mayo de 2010, 03:50 »
0
Como estan toos, espero que muy bien.... Bueno directo al grano. Estoy empezando a aprender PHP y he leido un poco sobre todo el manual oficial, pero no hay nada como hacer programas e ir llevando golpes, el hecho es que pase un programa super sencillo que tenia en C a PHP pero tengo un pequeño problema relacionado con archivos, explico.

En el programa tengo que cargar un archivo que contiene nombres y apellidos para hacer operaciones sobre ellos, mi problema es el siguiente, como subo el archivo al servidor y le paso la ruta al script php que me hace la accion, ese script esta en otra pagina. Aqui coloco como tengo el form.

Código: Text
  1.  
  2. <form method="POST" enctype="multipart/form-data" action="principal.php">
  3.   Archivo A Cargar:
  4.   <input type="file" name="file" id="file" value="file" />
  5.   <input type="submit" name="commit" value="Send" />
  6. </form>
  7.  
  8.  

El hecho es que ese archivo seleccionado tengo que subirlo al servidor y posteriormente enviarle la ruta a la funcion que me hace la operacion, o seria genial lo guardara en la misma carpeta que el archivo php. ¿  Como hago todo eso  ?. Hasta ahora probando en un servidor local con apache y php5 corre todo bien cuando tengo los archivos en la misma carpeta pero en otras carpetas no lo agarra, ya que el form manda solo el nombre del archivo pero no la ruta completa.

Alguna ayuda, no es una tarea ok ¬¬ siempre salta uno a decir eso, solo yo queriendo aprender y que mejor de las manos de personas que saben.

fonsi3

  • Miembro activo
  • **
  • Mensajes: 95
    • Ver Perfil
Re: Empezando en PHP, ¿ Archivos ?
« Respuesta #1 en: Viernes 21 de Mayo de 2010, 06:25 »
0
En PHP exísten las que se llaman predefined variables, las más importantes a tener en cuenta son: $_POST, para cuando mediante el method="post" se envía data al server, $_GET, cuándo la data es envíada por method="get", o simplemente cuándo hay data en la url, y $_FILES, para cuándo se envían datos binarios al server, por ende en <form> tiene que estar sí ó sí el attr enctype="multipart/form-data".

Ya sabiendo esto, simplemente en <form> en el attr action="somephppage.php" donde específicas, dónde se úbica el script que procesará la data que se enviará al server, en tu caso, como envías un archivo, deberás hacer uso del $_FILES, y obviamente del $_POST. Así que por ejemplo:

Código: PHP
  1. <?php
  2.     // acá pregunto si el índice 'commit' esta setteado,
  3.     // con esto verífico que la data ha llegando mediante
  4.     // method POST
  5.     if( isset( $_POST['commit'] ) ) {
  6.         // ahora debo verificar el $_FILES y ver si ta todo ok
  7.         if( $_FILES['file']['error'] === 0 ) {
  8.             // el archivo ha sido subido correctamente
  9.             // y prósigo ha ubicarlo en una carpeta en mi webserver
  10.            
  11.             // utiliza la function print_r( $_FILES ) pa saber la metadata
  12.             // del archivo subido en cuestión, print_r() es una function
  13.             // que escupe la estructura de un array, con sus respectivos
  14.             // índices y valores, super útil
  15.            
  16.            
  17.             // $_FILES['file']['tmp_name']: me tira en que carpeta
  18.             // esta ubicado este archivo temporalmente, ya sabiendo esto
  19.             // utilizo la function move_uploaded_file(), para ubicar al file
  20.             // en dónde se me plasca
  21.             move_uploaded_file( $_FILES['file']['tmp_name'], 'uploads/text.txt' ); 
  22.             // acuérdate que el segundo parámetro de esta function,
  23.             // hace referencia a donde será puesto el archivo subido
  24.             // y por ende debes específicar su nombre y su extensión,
  25.             // un error común para los beginners es poner directamente
  26.             // la carpeta pero no como se llamará el archivo.
  27.            
  28.         }
  29.     }
  30. ?>
  31.  

cha che chi cho chu buenichimo!
Cha che chi cho chu buenichimo!
http://mensoscripts.com

Links de interes: HTML | CCS2~CSS* | PHP
Indispensables tools]Firebug[/url] | Web Developer | FireFTP | Live Headers

kurtjavier

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: Empezando en PHP, ¿ Archivos ?
« Respuesta #2 en: Sábado 22 de Mayo de 2010, 22:36 »
0
Ey gracias por tu respuesta hermano, implemente y tenia algunos problemas asi que me fui de una al manual oficial de php y pude solucionar de la siguiente forma:

este es el form:
Código: Text
  1.  
  2. <form enctype="multipart/form-data" action="principal.php" method="post">
  3. <input type="hidden" name="MAX_FILE_SIZE" value="1000">
  4. Archivo A Cargar: <input name="file" type="file">
  5. <input type="submit" value="Enviar">
  6.  
  7.  

y en el archivo php tengo este codigo:
Código: PHP
  1.  
  2. $nombre_archivo = $HTTP_POST_FILES['file']['name'];
  3.  
  4.     if (move_uploaded_file($HTTP_POST_FILES['file']['tmp_name'],$nombre_archivo))
  5.     {
  6.         echo "El archivo "$nombre_archivo" ha sido cargado correctamente<br>";
  7.         cargar();
  8.         repite();
  9.         mostrar();
  10.     }
  11.     else
  12.     {
  13.         echo "Ocurrió algún error al subir el fichero. No pudo guardarse<br>";
  14.     }
  15.  
  16.  

El problema que tenia que no me ejaba utilizar ninguna funcion ni COPY ni MOVE_UPLOADED_FILE.... el problema era que tenia que darle permisos a la carpeta y a los archivos para poder escribir ¬¬ ........mas facil imposible, y yo dandome mala vida ah....... gracias igual men siempre se puede contar con gente de este foro ;)