File控件选择图片的时候在Html5下马上预览

时间:2021-05-30 20:22:39

页面HTML

    <div>
<img src="@pic.Path" id="img" style="width:200px;height:200px;" />
<form id="form_photo" method="post" action="/N/SavePhoto?id=1">
<input style=" display:none" type="file" name="file" id="file" accept="image/gif,image/jpeg,image/jpg,image/png,image/svg" />
<input type="hidden" name="HeadImg" />
<input type="button" value="提交" onclick="savePhoto(1)" />
</form>
</div>

JS

/*=============File控件选择图片的时候在Html5下马上预览=================*/
function InitFile(fileId, imgId) { $("#" + imgId).click(function () {
$("#" + fileId).trigger("click");
}); document.getElementById(fileId).onchange = function (evt) {
// 如果浏览器不支持FileReader,则不处理
if (!window.FileReader) return;
var files = evt.target.files;
for (var i = , f; f = files[i]; i++) {
if (!f.type.match('image.*')) {
continue;
}
var reader = new FileReader();
reader.onload = (function (theFile) {
return function (e) {
// img 元素
document.getElementById(imgId).src = e.target.result;
}; })(f);
reader.readAsDataURL(f); }
} } InitFile("file", "img"); //h5选择图片加载

注:由于

accept="image/*"的缘故,使用谷歌浏览器打开图片文件,响应5~6S(效果不佳,IE浏览器不会--秒开)
查找资料之后修改成
accept="image/gif,image/jpeg,image/jpg,image/png,image/svg"
但也一样(IE浏览器不会--秒开),有高见的请求支援 还有就是,form表单提交文件的话,需要加个enctype="multipart/form-data",
我是使用AJAX提交的(这个需要引用jquery-form.js) 本人新手小白,只是写一写记录,感谢指导我的大大。