您可以使用JavaScript FileReader API來顯示從文件輸入字段提供的圖像預覽。 這意味着您不必使用服務器端php和ajax來顯示圖像,這非常有用。使用JavaScript FileReader API時是否有文件大小限制?
我的問題,雖然是這樣的:
是否有正在使用的任何限制的圖像文件的大小?就像用戶選擇20MB的圖像一樣,filereader能夠處理它嗎?機器的內存可能會最大化嗎?
我現在正在我的機器上進行本地測試。我試圖加載一個bmp文件(53MB!),這個文件花了大約15秒來處理並顯示在頁面上。 1/2MB的其他文件一般顯示即時。
它可能不是必需的,但這裏是我的HTML文件:(FYI:此代碼的工作以及在支持的瀏覽器)
<!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"> </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>
[This answer](http://stackoverflow.com/questions/9265139/html5-filereader-api-crashes-chrome-17-when-reading-large-file-as-slice)侷限性。 – kamituel
像這樣的任何容量問題總是有相同的答案:它會工作,直到它不,它取決於客戶端的能力。便宜的智能手機不會像擁有大量RAM的臺式電腦那樣容量大。 – Pointy