Tengo un formulario con capacidades de carga de archivos y me gustaría poder tener algunos buenos informes de errores del lado del cliente si el archivo que el usuario está tratando de cargar es demasiado grande, ¿hay alguna manera de verificar el tamaño del archivo con jQuery? ya sea puramente en el cliente o de alguna manera publicar el archivo de nuevo en el servidor para comprobar?¿Cómo verificar el tamaño de entrada del archivo con jQuery?
Respuesta
En realidad, no tiene acceso al sistema de archivos (por ejemplo, leer y escribir archivos locales), sin embargo, debido a la especificación HTML5 File Api, hay algunas propiedades de archivo a las que tiene acceso y el tamaño del archivo es uno de ellos.
Para el HTML
<input type="file" id="myFile" />
pruebe lo siguiente:
//binds to onchange event of your input field
$('#myFile').bind('change', function() {
//this.files[0].size gets the size of your file.
alert(this.files[0].size);
});
Como se trata de una parte de la especificación de HTML 5, que sólo funcionará para los navegadores modernos (v10 requeridos para IE) y He añadido here más detalles y enlaces sobre otros archivos de información que debe saber: http://felipe.sabino.me/javascript/2012/01/30/javascipt-checking-the-file-size/
navegadores viejos apoyan
Tenga en cuenta que los navegadores antiguos volverán un valor null
para la this.files
llamada anterior, por lo que el acceso a this.files[0]
lanzará una excepción y que debiera check for File API support antes de usarlo
Puede hacer este tipo de comprobación con Flash o Silverlight pero no con Javascript. El sandbox de javascript no permite el acceso al sistema de archivos. El control de tamaño debería hacerse en el servidor después de que se haya cargado.
Si desea ir a la ruta Silverlight/Flash, puede verificar si no están instalados de forma predeterminada a un controlador de carga de archivos normal que utiliza los controles normales. De esta forma, si tienen instalado Silverlight/Flash, su experiencia será un poco más rica.
Si desea utilizar jQuery de validate
que pueda mediante la creación de este método:
$.validator.addMethod('filesize', function(value, element, param) {
// param = size (en bytes)
// element = element to validate (<input>)
// value = value of the element (file name)
return this.optional(element) || (element.files[0].size <= param)
});
usted podría utilizarlo:
$('#formid').validate({
rules: { inputimage: { required: true, accept: "png|jpe?g|gif", filesize: 1048576 }},
messages: { inputimage: "File must be JPG, GIF or PNG, less than 1MB" }
});
Esto no funciona con IE – Dan
@Dan sí, la propiedad de tamaño de archivo es una parte del Especificación HTML5, por lo que solo funcionará para los navegadores modernos (para IE sería la versión 10+) –
Ha utilizado incorrectamente la regla 'accept', donde debería haber usado la regla' extension'. ~ [La regla 'accept'] (http://jqueryvalidation.org/accept-method/) es solo para tipos MIME. [La regla 'extensión'] (http://jqueryvalidation.org/extension-method/) es para extensiones de archivo. También necesita incluir [el archivo 'additional-methods.js'] (http://cdn.jsdelivr.net/jquery.validation/1.13.1/additional-methods.js) para estas reglas. – Sparky
este código:
$("#yourFileInput")[0].files[0].size;
Devuelve el tamaño del archivo para una entrada de formulario.
En FF 3.6 y más tarde este código debe ser:
$("#yourFileInput")[0].files[0].fileSize;
Tu primer código funciona en cromo, pero el segundo no funciona para Firefox más reciente. –
primer código que funciona bien en FireFox. – Dhwani
Ese segundo código es lo que tuve que usar para todos los navegadores modernos (2014+). – Dreamcasting
Estoy publicar mi solución también se usa para una FileUpload
control de ASP.NET. Quizás alguien lo encuentre útil.
$(function() {
$('<%= fileUploadCV.ClientID %>').change(function() {
//because this is single file upload I use only first index
var f = this.files[0]
//here I CHECK if the FILE SIZE is bigger than 8 MB (numbers below are in bytes)
if (f.size > 8388608 || f.fileSize > 8388608)
{
//show an alert to the user
alert("Allowed file size exceeded. (Max. 8 MB)")
//reset file upload control
this.value = null;
}
})
});
Necesita anular la comprobación del valor de 'f = this.files [0]' o esto fallará en los navegadores más antiguos. p.ej. 'if (f && (f.size> 8388608 || f.fileSize> 8388608))' –
<form id="uploadForm" class="disp-inline" role="form" action="" method="post" enctype="multipart/form-data">
<input type="file" name="file" id="file">
</form>
<button onclick="checkSize();"></button>
<script>
function checkSize(){
var size = $('#uploadForm')["0"].firstChild.files["0"].size;
console.log(size);
}
</script>
Me pareció que para ser el más fácil si usted no planea enviado el formulario a través norma ajax/html5 métodos, pero por supuesto que funciona con cualquier cosa.
NOTAS:
var size = $('#uploadForm')["0"]["0"].files["0"].size;
Esta utilizan para trabajar, pero no es así en cromo más, Acabo de probar el código anterior y funcionó tanto en FF y cromo (lastest). El segundo ["0"] ahora es firstChild.
- 1. ¿Cómo cambiar el tamaño del botón del archivo de entrada?
- 2. ¿Cómo verificar el tamaño de un archivo?
- 3. Asp.Net Verificar el tamaño del archivo antes de cargar
- 4. jquery - verificar la longitud del campo de entrada?
- 5. Verificar una entrada con jQuery.contains()
- 6. limitar el tamaño de un archivo de carga (entrada html)
- 7. Cómo verificar un tipo de entrada = "archivo" tiene un archivo o no usa jquery?
- 8. ¿Cómo optimizar el tamaño del archivo PDF?
- 9. Cómo expandir el tamaño del búfer de entrada de pyserial
- 10. Encontrar el tamaño del archivo detrás del enlace de descarga con jQuery
- 11. jQuery tomar un archivo cargado con tipo de entrada = 'archivo'
- 12. Evento de entrada de fuego con jQuery
- 13. ¿Cómo obtengo el comando find para imprimir el tamaño del archivo con el nombre del archivo?
- 14. Cómo representar visualmente el tamaño del archivo
- 15. ¿Cómo verificar el tamaño del archivo cargado de forma segura en bottlepy?
- 16. Cómo obtener el tamaño del archivo HttpPostedFileBase
- 17. compruebe si el archivo de entrada archivado está vacío jquery
- 18. Reduce el tamaño del archivo PDF generado con Quartz2D
- 19. Cambiar el valor de entrada del formulario con Jquery
- 20. jQuery - entrada de texto de tamaño automático (¡no textarea!)
- 21. jQuery: ¿cómo se cambia el tamaño de la entrada del formulario en función del ancho del valor?
- 22. Cómo comprobar el tamaño del archivo al cargar
- 23. Verificar el tamaño total del archivo de un directorio específico para un usuario específico
- 24. jQuery selector de fechas con el texto de entrada que no permite la entrada del usuario
- 25. jQuery: cómo obtener el "valor" del campo de entrada de carga de archivo
- 26. Comprobación de entrada en blanco con jQuery
- 27. Javascript para verificar el tamaño del archivo antes de cargarlo en Internet Explorer
- 28. Reducir el tamaño del archivo de pdf
- 29. Cómo verificar el # de líneas usando jQuery
- 30. Otras formas de verificar el tamaño del archivo antes de cargarlo
Todo el mundo dice que esto no se puede hacer, pero aquí está. Esto funciona. Lo probé – Peter
no funcionará en ie8. –
@Jeroen Estoy de acuerdo en que no trabajar para IE hace que no sea la solución ideal para mucha gente, ¿pero no da un voto negativo y dice que la respuesta es inútil demasiado? Utilicé esta solución en una gran variedad de soluciones web empresariales que tenían el alcance de la necesidad de trabajar solo en Chrome y/o Firefox, y algunas personas que buscan esta solución podrían estar en el mismo lugar, por lo que esta solución será lo suficientemente buena . –