Uploads

Hola, quiero saber algo sobre los uploads en rails. lo que quiero
hacer es restringir la subida de archivos, solo que suban archivos de
*.x extensión, ademas de obtener el nombre de este para poder jugar
con el (obtener solo el nombre, no la extensión).

Ojala me puedan ayudar… gracias!

Alberto L.
[email protected]

On 1/16/07, Alberto L. [email protected] wrote:

Hola, quiero saber algo sobre los uploads en rails. lo que quiero hacer es
restringir la subida de archivos, solo que suban archivos de *.x extensión,
ademas de obtener el nombre de este para poder jugar con el (obtener solo el
nombre, no la extensión).

Ojala me puedan ayudar… gracias!

Para recibir archivos lo primero que tienes que hacer es un formulario
html con un campo en él. Además el form debe tener
el atributo enctype=“multipart/form-data”, lo que se consigue con la
opción :multipart => true en Rails (este paso es muy importante).

Luego en el método donde se trata el archivote llegará un objeto en el
hash params. Depende del tamaño del archivo la clase del objeto será
un StringIO o un TempFile, pero esto te da igual (es sólo para que no
te asustes cuando veas que te llegan a veces uno y a veces otro). Lo
que hay que hacer es comprobar el tamaño del objeto con obj.size > 0.

Una vez comprobado que te han mandado algo tienes varios métodos a tu
disposición: read te devolverá los datos del objeto, content_type el
tipo MIME del archivo y original_filename el nombre del archivo
enviado.

Para obtener la extensión o el nombre “base” del archivo puedes jugar
con algunas expresiones regurlares: por ejemplo /.([^.]+)$/ te
devolverá la extensión del fichero y /[\/]?(.+).[^.]+$/ te
devolvería el nombre del archivo (esta última expresión regular no la
he comprobado).

Daniel, ya habia hecho lo que me dijiste, pero ahora, en el modelo
ocupo File.open(“directorio”, “modos”) y la verdad me da problemas
(debido a que no se usar bien esa funcion.

o puedo hacerlo de manera mas sencilla?. explicame por favor.

Gracias!

El 16-01-2007, a las 5:39, Daniel R. Troitiño escribió:

que hay que hacer es comprobar el tamaño del objeto con obj.size > 0.
he comprobado).


Ror-es mailing list
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es

Alberto L.
[email protected]