Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] leer un fichero subido a través de formulario.

Estas en el tema de leer un fichero subido a través de formulario. en el foro de PHP en Foros del Web. Buenas. Estaba intentando crear una web en la cual hay un formulario con un campo para subir un fichero. La cosa es que este fichero ...
  #1 (permalink)  
Antiguo 14/10/2013, 12:11
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 244
Antigüedad: 17 años, 9 meses
Puntos: 32
leer un fichero subido a través de formulario.

Buenas.

Estaba intentando crear una web en la cual hay un formulario con un campo para subir un fichero. La cosa es que este fichero deberá tener un formato .csv y lo que me gustaría hacer con el es leerlo.
Sin embargo, los ejemplos que encuentro sobre formularios con ficheros lo que hacen es mover el fichero al servidor. No sé si esto es una restricción y hasta que no se situe el fichero en el servidor no lo puedo leer. O si se puede leer directamente sin moverlo al servidor. En ese último caso, ¿como se haría? ¿Se le pueden aplicar las funciones fgets, fread, etc. directamente?

Un saludo!
  #2 (permalink)  
Antiguo 14/10/2013, 12:17
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: leer un fichero subido a través de formulario.

no hace falta moverlo, originalmente lo que hace php es situarlo en el directorio temporal del OS, el cual se encarga de eliminarlo posteriormente, es por ello que se mueve (para conservarlo).

pero si en tu caso, no necesitas moverlo, sino leer su contenido y vaciarlo por ejemplo en una BD no hace falta que lo muevas, leelo directamente y listo, así te olvidas de hacer otro proceso de eliminación ya que el OS se encarga de ello
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 15/10/2013, 05:20
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 244
Antigüedad: 17 años, 9 meses
Puntos: 32
Respuesta: leer un fichero subido a través de formulario.

Gracias maycolalvarez

Ahora veo que el problema que tenia es que pensaba que al subir el fichero desde el formulario ya obtenia el handle para poder leerlo. Con PHP lo que se debe obtener es un array asociativo. Yo que estoy trabajando con Symfony2 obtengo un objeto de la clase UploadedFile:
Código PHP:
$file $form->getData()->getFile(); 
$file tiene los siguientes miembros:
test, originalName, mimeType, size, error, pathName y fileName.

Supongo que deberé usar el campo mimeType para comprobar que el tipo es un csv y concatenar pathName con fileName para obtener la ruta del fichero temporal y así poderlo abrir con la función fopen.

Aunque primero tendré que investigar sobre los getters de la clase UploadedFile. Pues los miembros de los que hablo anteriormente son privados.

Un saludo!

PD.: Pues menudo problema. Estoy viendo que la [URL=http://api.symfony.com/2.0/Symfony/Component/HttpFoundation/File/UploadedFile.html]clase UploadedFile[/URL] no tiene getters para conseguir la ruta temporal y así poder abrir el fichero. ¿Alguna idea?

Última edición por Pantaláimon; 15/10/2013 a las 05:28
  #4 (permalink)  
Antiguo 15/10/2013, 06:06
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 244
Antigüedad: 17 años, 9 meses
Puntos: 32
Respuesta: leer un fichero subido a través de formulario.

Bueno, soluciona el problema expuesto antes saber que la clase UploadedFile es descendiente de la clase SplFileInfo de PHP y ésta tiene los getters adecuados.

De manera que abrir el fichero subido desde formulario para leerlo equivale a hacer lo siguiente:
Código PHP:
$file $form->getData()->getFile();
$handler fopen$file->getPathname(), "r" ); 
Un saludo y gracias!

Etiquetas: fichero, formulario
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 09:06.