¿Cómo puedo validar el tamaño del archivo en el lado del cliente usando JavaScript? Estoy usando type=file
para seleccionar el archivocómo validar el tamaño del archivo usando HTML y Javascript en el lado del cliente
Respuesta
ACTUALIZACIÓN 2013 a partir de esta edición, la API de archivos es compatible con todos los principales navegadores, y en IE partir de la versión 10
http://caniuse.com/#search=file%20api
Usted puede aún desea usar SWFUpload si todavía necesita soportar IE9 y versiones anteriores, aunque en este punto probablemente debería ser más un retroceso, ya que la api del archivo html5 tiene soporte en plataformas móviles a las que SWFUpload no puede llegar. La api del archivo html5 se basa en la api del archivo de Firefox como se indica a continuación.
Ver también esta pregunta duplicado Client Checking file size using HTML5?
ACTUALIZACIÓN: Firefox ha cambiado su API a esta https://developer.mozilla.org/en/DOM/FileReader
Puede hacerlo en Firefox como tal
html:
<form action="" method="get" accept-charset="utf-8"> <input type="file" name="file" value="" id="file"> <p><input type="submit" value="Continue →"></p> </form>
javascript:
var filesize = document.forms[0].file.files[0].fileSize
si hay una manera de hacer esto en el IE, no lo sabía. Probablemente involucra activeX u otro tipo de basura.
edición: yo encontramos este here, cómo hacer esto en IE
<head>
<script>
function getSize()
{
var myFSO = new ActiveXObject("Scripting.FileSystemObject");
var filepath = document.upload.file.value;
var thefile = myFSO.getFile(filepath);
var size = thefile.size;
alert(size + " bytes");
}
</script>
</head>
<body>
<form name="upload">
<input type="file" name="file">
<input type="button" value="Size?" onClick="getSize();">
</form>
</body>
</html>
Tal vez usted podría utilizar SWFUpload lugar, que es una pequeña aplicación Flash que se encarga de la parte cliente de la carga para usted. Desde su lista de características:
- cargar varios archivos a la vez ctrl/shift-selección en el diálogo
- devoluciones de llamada de JavaScript en todos los eventos
- información Obtener archivo antes de subida comienza
- elementos de estilo de carga con XHTML y css
- Mostrar información mientras se cargan los archivos con HTML
- No es necesario recargar la página
- Funciona en todas las plataformas/navegadores compatibles con Flash.
- degrada con gracia a la forma normal de subida HTML si Flash o Javascript no está disponible
- tamaño del archivo de control antes de que comience carga
- Sólo mostrar tipos de archivos seleccionados en el diálogo
- archivos de cola, quitar/añadir archivos antes de iniciar la carga
Me gustaría combinar las dos formas diferentes de verificar el tamaño del archivo en el lado del cliente usando javascript. Lo he probado en FF/IE/Chrome y funciona bien:
<script type="text/javascript">
function checkBrowser()
{
if(navigator.appName == "WebTV")
{
alert("You're using the WebTV browser.")
}
if(navigator.appName == "Netscape")
{
checkFileSizeFF();
}
if(navigator.appName == "Microsoft Internet Explorer")
{
checkFileSizeIE();
}
}
function checkFileSizeFF()
{
var filesize = document.forms[0].file.files[0].fileSize;
alert(filesize/(1024*1024) + " MB");
}
function checkFileSizeIE()
{
var myFSO = new ActiveXObject("Scripting.FileSystemObject");
var filepath = document.upload.file.value;
var thefile = myFSO.getFile(filepath);
var size = thefile.size/(1024*1024);
alert(size + "MB");
}
</script>
<form action="" method="get" accept-charset="utf-8" name="upload">
<input type="file" name="file" value="" id="file">
<p><input type="submit" value="Continue →" onclick="checkBrowser()"></p>
</form>
<div id="example"></div>
- 1. ¿Cómo obtener el tamaño de archivo desde el lado del cliente sin usar activex en javascript?
- 2. Cómo validar una entrada de archivo en el lado del cliente (Javascript)
- 3. Pura HTML + JavaScript lado del cliente plantillas
- 4. Cómo validar dirección MAC y dirección IP en el lado del cliente (usando javascript) y el lado del servidor (usando C#)
- 5. Método del lado del servidor y del lado del cliente
- 6. Acceso a MongoDB en el lado del cliente usando JavaScript
- 7. Comprobación entre exploradores del tamaño del archivo en el lado del cliente antes de cargarlo en el servidor?
- 8. ¿Detecta el tamaño de carga del archivo en el lado del cliente?
- 9. Método no estático en el lado del servidor desde el lado del cliente usando JavsScript
- 10. Cliente Comprobando el tamaño del archivo usando HTML5?
- 11. Cómo comprobar la página. Validar() en el lado del cliente (JavaScript) en ASP.Net?
- 12. ¿Cómo guardar un archivo en el lado del cliente usando JavaScript?
- 13. Cómo crear un archivo de texto localmente en el lado del cliente usando JavaScript/JQuery
- 14. Usando Ajax, ¿es mejor generar marcado adicional en el servidor o en el lado del cliente?
- 15. librería javascript para el almacenamiento del lado del cliente con la sincronización del lado del servidor
- 16. ¿Cómo puedo crear un archivo para el almacenamiento en el lado del cliente con JavaScript?
- 17. Rendering HTML + Javascript del lado del servidor
- 18. Acceso a la variable del lado del servidor en el lado del cliente y viceversa Asp.Net y javascript
- 19. Coloque las plantillas de JavaScript del lado del cliente en HTML o JavaScript?
- 20. DDD y validación del lado del cliente
- 21. Error-logging para javascript en el lado del cliente
- 22. Idiomas del lado del cliente
- 23. ¿Cómo ejecutar el código del lado del cliente y del servidor para el mismo botón?
- 24. Web Charting, lado del servidor o del lado del cliente?
- 25. Imagen de recorte de Javascript del lado del cliente
- 26. ¿Cómo evitar la duplicación de html en tempates del lado del cliente y del servidor?
- 27. Representar ecuaciones usando Javascript (o cualquier lado del cliente)
- 28. Registradores en el lado del cliente GWT
- 29. GWT del lado del cliente, recorte de imagen y cambiar el tamaño
- 30. Crear validación combinada del lado del cliente y del lado del servidor en Symfony2
+1 No lo sabía - borré mi publicación. – Amarghosh
+1 Si bien este es un buen enfoque (utilizando Javascript de lo que se trataba la pregunta original), en realidad solo está haciendo una solución para dos navegadores. Por supuesto, estos son dos de los navegadores más populares, pero si necesita compatibilidad con varios navegadores/plataformas, puede resultar bastante difícil de implementar. –
JavaScript no puede ser un reemplazo para verificar el tamaño del archivo en el servidor. Si el objetivo es simplemente ahorrar algunos recursos, entonces ese objetivo es posible, creo. – Breton