Sont-il des limitations de taille de fichier lors de l'utilisation de javascript FileReader API?

Vous pouvez utiliser javascript FileReader API pour afficher un aperçu d'une image qui est fournie à partir d'un fichier de champ de saisie.
Cela est très utile dans le sens que vous n'avez pas à utiliser côté serveur php et ajax pour afficher l'image.

Ma question est: est-ce

Est-il une limite à la taille du fichier image à utiliser? Comme si l'utilisateur était de sélectionner une image qui est de 20 mo, le filereader être capable de les gérer? Et les machines à mémoire de devenir potentiellement max-ed?

Je suis en essais juste en local sur ma machine pour le moment. J'ai essayé de charger un fichier bmp (53MB!), ce qui a pris environ 15 secondes de traiter et d'afficher sur la page.
Autres fichiers en 1/2MB généralement d'afficher instantanément.

Ce n'est probablement pas nécessaire, mais c'est mon fichier HTML: (FYI: ce code fonctionne bien dans les navigateurs pris en charge)

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Dropzone File Upload</title>
</head>
<body>
<img id="uploadPreview" src="default.png" style="width: 100px; height: 100px;" />
<input id="uploadImage" type="file" name="myPhoto" onchange="PreviewImage();" />
<p id="uploadProgress">&nbsp;</p>
<script type="text/javascript">
function PreviewImage() {
var avatar_image = document.getElementById("uploadImage");
var avatar_preview = document.getElementById("uploadPreview");
var avatar_progress = document.getElementById("uploadProgress");
if ( window.FileReader ) { //if supports filereader
var imgReader = new FileReader();
imgReader.readAsDataURL(avatar_image.files[0]); //read from file input
imgReader.onloadstart = function(e) {
avatar_progress.innerHTML = "Starting to Load";
}
imgReader.onload = function (imgReaderEvent) {
//if file is image
if (
avatar_image.files[0].type == 'image/jpg' ||
avatar_image.files[0].type == 'image/jpeg' ||
avatar_image.files[0].type == 'image/png' ||
avatar_image.files[0].type == 'image/gif' ||
avatar_image.files[0].type == 'image/bmp'
) {
avatar_preview.src = imgReaderEvent.target.result;
}
else {
avatar_preview.src = 'filetype.png';
}
}
imgReader.onloadend = function(e) {
avatar_progress.innerHTML = "Loaded!";
}
}
/* For no support, use ActiveX instead */
else {
document.getElementById("uploadPreview").src = "nosupport.png";
}    
};
</script>
</body>
</html>
Cette réponse suggère que la mémoire est votre principale limitation.
Tout problème relatif à la capacité, comme cela a toujours la même réponse: ça marchera jusqu'à ce qu'il n'a pas, et il dépend de la capacité du client. Un bon smartphone n'aurez pas autant de capacités qu'un ordinateur de bureau avec beaucoup de RAM.

OriginalL'auteur Patrick Keane | 2013-12-20