【发布时间】:2016-11-29 03:49:03
【问题描述】:
function changeFile() {
var preview = document.getElementById("previewDiv");
preview.style.backgroundImage = "";
var element = document.getElementById("ads_files");
var files = element.files;
var file = files[0];
console.log(file);
var reader = new FileReader();
reader.onload = loadFinished;
reader.readAsDataURL(file);
function loadFinished(event) {
var data = event.target.result;
preview.style.backgroundImage = 'url(' + data + ')';
}
}
#previewDiv {
border: 2px solid rgb(204, 204, 204);
width: 250px;
height: 200px;
background-size: 100% 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="file" id="ads_files" name="file" onchange=changeFile() />
<div id="previewDiv">
</div>
上面的代码是上传一张图片,显示为div的背景。效果很好。
现在我希望上传具有适当宽度和高度的图片。所以我需要获取上传图片的大小(其他图片不会上传到服务器)。
我在互联网上搜索了一些解决方案。看来 document.getElementById("ads_files").value 可能会在图片上传后获取文件的路径。然后使用 Image.src=document.getElementById("ads_files") 加载图像并使用 Image 函数获取大小。
但问题是该值是一个假路径,如 c:\fakepath\10256530_503531203106865_63236440322903725_n.jpg(我使用的是 Mac !!!)。程序当然行不通。
我敢打赌,这项工作可以在本地完成,但我不知道该怎么做。
有什么好主意吗?
【问题讨论】:
-
大小合适是什么意思,你说的是图片尺寸还是图片文件大小?
-
file.size 获取文件的大小。
-
我的意思是图像尺寸,宽度和高度。
-
你应该使用
URL.createObjectURL(file)而不是使用FileReader
标签: javascript html css