2011-09-02 8 views
11

¿Es posible usar Javascript para verificar el tamaño de un archivo (en el lado del cliente) antes de que se cargue realmente en el servidor?Javascript para verificar el tamaño del archivo antes de cargarlo en Internet Explorer

La aplicación está construida en EXTJS y Java y está restringida al uso de Internet Explorere 7 en máquinas con Windows XP. No se permite el uso de activeX.

El flujo de trabajo es como tal: El usuario selecciona un archivo para cargar. La validación se inicia inmediatamente para verificar el tipo de archivo y el tamaño del archivo. Si el tamaño del archivo excede el límite, la GUI solicitará un error. Si el tamaño del archivo está dentro del límite, el archivo completo se pasará al extremo del servidor (servlet java) que se cargará.

¿Se puede lograr la comprobación del tamaño del archivo y la lectura de la ruta completa del archivo con javascript?

Respuesta

0

La razón por la que no se puede es porque sería malo si los navegadores y javascript pudieran acceder al sistema de archivos de los clientes.

Esto se niega activamente y puede verse como un ataque.

Using jQuery, Restricting File Size Before Uploading

+0

¿Qué otro método. Digamos que tengo un formulario de entrada, primero encuentro el camino de archivo completo y luego lo paso al código de comprobación del tamaño del archivo. Miré en uploadify, swfupload, fancifulupload y yuiuploader. Parece que no puedo "alimentar" el camino de archivo completo en ellos. – user924590

3

No tenemos manera de comprobar de forma portátil del tamaño de un archivo cargado desde el navegador web. El HTML5 File API hace esto posible, pero eso no está disponible en MSIE7; actualmente está en camino para MSIE10.

Intencionalmente no hay forma de determinar la ruta completa de un archivo cargado, ya que puede incluir información confidencial, como el nombre del usuario final.

+0

Estoy buscando PRE-subir el archivo. Por ejemplo, cuando he seleccionado el archivo y luego ANTES de la carga real para obtener el tamaño del archivo y la ruta de archivo completa. – user924590

+1

Como ya he señalado, actualmente no hay forma de detectar el tamaño del archivo, y hay (y probablemente nunca lo habrá) alguna forma de determinar la ruta local. – duskwuff

4

Es posible con objetos ActiveX.

<html> 
<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> 
+0

Gracias por el código. Como mencioné en mi primera publicación, no voy por el camino de ActiveX. :) – user924590

-3

Por favor, intente más adelante código,

<html> 
<head> 
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.js"></script> 
<script type="text/javascript"> 
$(function() { 
$("document").ready(function(){ 
     $("#myFile1").change(function() { 

     var f1=document.getElementById("myFile1").value; 
     if((f.size||f.fileSize)==09765625) 
     { 
     alert("file size is less than 1mb"); 
     } 
     else 
     { 
     alert("file size should not exceed more than 1mb"); 
       $(this).val($.data(this, 'f')); 
     return false; 
     } 

      }); 
}); 
}) 
</script> 
</head> 
<body> 

<input type='file' name="file" id="myFile1" /> 

</body> 
</html> 
+0

Este código es engañoso – nicoabie

Cuestiones relacionadas