Blogs Media: CSS Mania | VivirLatino | Sentido Web | Apps Mania

Publicidad

Vie22Sep2006

Limita el tamaño de ficheros a subir mediante Apache

16:00 H (CET)| Temas: Apache

El otro día una amiga me escribía bastante agobiada preguntando cómo se podía saber mediante Javascript el tamaño de un fichero que se quería subir, porque si superaba cierto tamaño, no se debía permitir que se subiera (antes de que se intente mandar). Mi respuesta fue un "no se puede hacer desde el cliente" (espero no haberme equivocado).

El problema que tenía es que le obligaban a que fuera en el navegador, supongo que o el cliente (cabezón) o el analista/jefe (más cabezón aún). La solución, que creo que no aceptaban era controlarlo mediante Apache: se añade en el fichero .htaccess la siguiente directiva y ya no hay problemas:

LimitRequestBody tamaño

Siendo tamaño el número de bytes que ponemos como límite para subir ficheros.

A parte de este ejemplo, mi pobre amiga siempre anda enmarronada con peticiones increibles. Por ello, dos consejos:

  • No dejéis que el cliente imponga lo que le venga en gana, hay cosas que no se pueden/deben hacer y por mucho que se empeñe, seguirán sin poderse/deberse hacer. Entre ellas, siempre se comprueban las cosas en el servidor, nunca únicamente en el cliente, sobre todo por temas de seguridad.
  • El elemento input file es tal cual es, no se le puede cambiar el texto del botón, ni aplicarle filtro, ni que te vaya a la carpeta que quieran, ni cambiar el diseño de la ventana, ni modificar mediante Javascript el fichero que se quiere seleccionar. Aunque parezca mentira siempre acaban pidiéndonos alguna de estas cosas.

Pido disculpas si esta entrada no es la típica, pero es que las tonterías del cliente acaban sacándote de quicio.

Relacionados

Feedback (3) » Formulario

1. Jesus ~ Martes, 17 Oct 2006 | 21:20H:

Yo he conseguido conocer el tamaño de un fichero en la parte del cliente.
Solo se me ha ocurrido hacerlo con una foto.
Consiste en cargar mediante JavaScript en un objeto la foto en cuestion. Despues, preguntas por Document.getElemetById('foto1').size y te devuelve el tamaño en bytes. Para hacerlo con otros ficheros es probarlo, o pensar porque por ahi van los tiros. Con las fotos va perfecto, porque aunque le indiques un Width y Heigth pequeño el tamaño te lo indica correctamente.

Un saludo.

2. Luis ~ Miércoles, 18 Oct 2006 | 00:30H:

¿Funciona eso para cualquier navegador?, creo que quizas solo sirva para IE, he mirado en la definición de HTMLImageElement y no he encontrado nada. Si nos pudieras indicar si sirve para Firefox u Opera estaría genial.

Gracias por el comentario y felicidades por el recurso de haberlo pensado.

Saludos

3. jose ~ Jueves, 13 Sep 2007 | 12:03H:

Podrias desarrollar un poco mas esa solución Jesus? No entiendo lo de "...cargar mediante JavaScript en un objeto la foto...". Yo crei haber encontrado una solucion, que era cargar la foto en un <img> y con la propiedad fileSize de img se sacaba. Pero no me deja cargar ficheros locales en un en la pagina, no se por que? He intentado <img src"file:///..."> pero no muestra las fotos. Ayuda, please

Conversación

Nombre:

Email:

(no aparecerá)

URL:

(opcional)
¿Recordar datos?

↓ Comentarios (XHTML permitido)