109 votes

Obtenir la taille du fichier avant le téléchargement

Existe-t-il un moyen de connaître la taille du fichier avant de télécharger le fichier à l'aide d'AJAX / PHP en cas de modification du fichier d'entrée ?

153voto

Web World Points 3221

Pour le HTML ci-dessous

 <input type="file" id="myFile" />

essayez ce qui suit :

 //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);

});

Voir le fil suivant :

Comment vérifier la taille d'entrée du fichier avec jQuery ?

15voto

Behnam Bakhshi Points 95
<script type="text/javascript">
function AlertFilesize(){
    if(window.ActiveXObject){
        var fso = new ActiveXObject("Scripting.FileSystemObject");
        var filepath = document.getElementById('fileInput').value;
        var thefile = fso.getFile(filepath);
        var sizeinbytes = thefile.size;
    }else{
        var sizeinbytes = document.getElementById('fileInput').files[0].size;
    }

    var fSExt = new Array('Bytes', 'KB', 'MB', 'GB');
    fSize = sizeinbytes; i=0;while(fSize>900){fSize/=1024;i++;}

    alert((Math.round(fSize*100)/100)+' '+fSExt[i]);
}
</script>

<input id="fileInput" type="file" onchange="AlertFilesize();" />

Travailler sur IE et FF

10voto

ucefkh Points 457

Meilleure solution fonctionnant sur tous les navigateurs ;)

 function GetFileSize(fileid) {
    try {
        var fileSize = 0;
        // for IE
        if(checkIE()) { //we could use this $.browser.msie but since it's deprecated, we'll use this function
            // before making an object of ActiveXObject, 
            // please make sure ActiveX is enabled in your IE browser
            var objFSO = new ActiveXObject("Scripting.FileSystemObject");
            var filePath = $("#" + fileid)[0].value;
            var objFile = objFSO.getFile(filePath);
            var fileSize = objFile.size; //size in b
            fileSize = fileSize / 1048576; //size in mb 
        }
        // for FF, Safari, Opeara and Others
        else {
            fileSize = $("#" + fileid)[0].files[0].size //size in b
            fileSize = fileSize / 1048576; //size in mb 
        }
        alert("Uploaded File Size is" + fileSize + "MB");
    }
    catch (e) {
        alert("Error is :" + e);
    }
}

de http://www.dotnet-tricks.com/Tutorial/jquery/HHLN180712-Get-file-size-before-upload-using-jquery.html

METTRE À JOUR : Nous utiliserons cette fonction pour vérifier s'il s'agit d'un navigateur IE ou non

 function checkIE() {
    var ua = window.navigator.userAgent;
    var msie = ua.indexOf("MSIE ");

    if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)){  
        // If Internet Explorer, return version number
        alert(parseInt(ua.substring(msie + 5, ua.indexOf(".", msie))));
    } else {
        // If another browser, return 0
        alert('otherbrowser');
    }

    return false;
}

9voto

Henry Le Points 131

J'ai eu le même problème et il semble que nous n'avons pas eu de solution précise. J'espère que cela pourra aider d'autres personnes.

Après avoir pris le temps d'explorer, j'ai finalement trouvé la réponse. Voici mon code pour obtenir une pièce jointe avec jQuery :

 var attach_id = "id_of_attachment_file";
var size = $('#'+attach_id)[0].files[0].size;
alert(size);

Ceci est juste l'exemple de code pour obtenir la taille du fichier. Si vous voulez faire d'autres choses, n'hésitez pas à changer le code pour satisfaire vos besoins.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X