2010-06-03 17 views
14

dando una ruta de un archivo como:
C: \ archivo.jpg
¿cómo puedo obtener el tamaño del archivo en javascript?obteniendo el tamaño de archivo en javascript

+0

http://code.google.com/p/gwtupload/ cheque esta cosa.De alguna manera logran mostrar la barra de progreso de carga – Andrey

+1

¿Tiene un servidor web capaz de acceder a 'C:'? Si su SO está en 'C:', desaconsejo eso, pero primero lo primero. – vol7ron

Respuesta

25

Si no es una aplicación local accionado mediante JavaScript con permisos de acceso completo, no puede obtener el tamaño de ningún archivo solo desde el nombre de ruta. Las páginas web que ejecutan javascript no tienen acceso al sistema de archivos local por razones de seguridad.

Puede usar una graciosa herramienta para subir archivos como SWFUpload si desea mostrar una barra de progreso. HTML5 también tiene el File API, pero aún no es ampliamente compatible. Si un usuario selecciona el archivo para un elemento input[type=file], puede obtener detalles sobre el archivo de la colección files:

alert(myInp.files[0].size); 
+0

Creo que lo mismo, pero ¿cómo algunas aplicaciones web inteligentes muestran la barra de progreso durante la carga? – Andrey

+0

@Andrey: otras aplicaciones web usan Java o Flash. Actualicé mi respuesta con un enlace al popular [SWFUpload] (http://www.swfupload.org/). –

+0

@Andrey Otras herramientas de secuencia de comandos como Flash, ActiveX, etc. pueden acceder al sistema de archivos local. Alternativamente, ciertas técnicas del lado del servidor se pueden usar para monitorear el progreso de carga de archivos y alimentar esa información cuando javascript lo solicite –

0

No se puede obtener el tamaño de archivo de los archivos locales con javascript de forma estándar utilizando un navegador web.

Pero si el archivo es accesible desde una ruta remota, es posible que pueda enviar una petición HEAD con Javascript, y leer la cabecera Content-Length, dependiendo del servidor web

+0

Creo que lo mismo, pero ¿cómo algunas aplicaciones web inteligentes muestran la barra de progreso durante la carga? – Andrey

+0

@Andrey usa un módulo flash o php que puede contar bytes o similar. – baloo

+0

flash está bien, pero PHP? – Andrey

0

Usted no puede, como no hay entrada/salida de archivo en Javascript. Ver here para una pregunta similar publicada.

0

No puede.

JavaScript no puede acceder a los archivos en la computadora local por razones de seguridad, incluso para verificar su tamaño.

Lo único que puede hacer es usar JavaScript para enviar el formulario con el campo file a un script del lado del servidor, que luego puede medir su tamaño y devolverlo.

9
function findSize() { 
    var fileInput = document.getElementById("fUpload"); 
    try{ 
     alert(fileInput.files[0].size); // Size returned in bytes. 
    }catch(e){ 
     var objFSO = new ActiveXObject("Scripting.FileSystemObject"); 
     var e = objFSO.getFile(fileInput.value); 
     var fileSize = e.size; 
     alert(fileSize);  
    } 
} 
+3

¿puede agregar una explicación? – CraigTeegarden

+0

Oh, supongo que la trampa para los navegadores no es compatible con la forma HTML5 – GabrielBB

0

Para obtener el tamaño del archivo de páginas en la web he construido un bookmarklet Javascript para hacer el truco. Alerta el tamaño en kb. Cambie la alerta a un aviso si desea copiar el tamaño del archivo.

Aquí está el código bookmarklet para la alerta.

<a href="javascript:a=document.getElementsByTagName('HTML')[0].outerHTML;b=a.length/1024;c=Math.round(b);alert(c+' kb');">Doc Size</a> 

Aquí está el código del bookmarklet para el aviso.

<a href="javascript:a=document.getElementsByTagName('HTML')[0].outerHTML;b=a.length/1024;c=Math.round(b);prompt('Page Size',c+' kb');">Doc Size</a> 

verlo en acción en http://bookmarklets.to.g0.to/filesize.php

0

prueba este.

function showFileSize() { 
 
    let file = document.getElementById("file").files[0]; 
 
    if(file) { 
 
    alert(file.size + " in bytes"); 
 
    } else { 
 
    alert("select a file... duh"); 
 
    } 
 
}
<input type="file" id="file"/> 
 
<button onclick="showFileSize()">show file size</button>

Cuestiones relacionadas