怎么简单获取input file 选中的图片,并在一个div的img里面赋值src实现预览?

可以用jquery,但是至少是支持IE8。求最最简单的代码... 可以用jquery,但是至少是支持IE8。求最最简单的代码 展开
 我来答
xpy0928
2015-07-24 · TA获得超过582个赞
知道小有建树答主
回答量:461
采纳率:50%
帮助的人:332万
展开全部
是只能用前台jquery实现???还要实现预览???还要兼容IE 7+????


代码如下利用html5实现:几乎兼容所有主流浏览器,当然IE必须是IE 6以上
【jquery代码】
$(function() {
$("#file_upload").change(function() {
var $file = $(this);
var fileObj = $file[0];
var windowURL = window.URL || window.webkitURL;
var dataURL;
var $img = $("#preview");

if(fileObj && fileObj.files && fileObj.files[0]){
dataURL = windowURL.createObjectURL(fileObj.files[0]);
$img.attr('src',dataURL);
}else{
dataURL = $file.val();
var imgObj = document.getElementById("preview");
// 两个坑:
// 1、在设置filter属性时,元素必须已经存在在DOM树中,动态创建的Node,也需要在设置属性前加入到DOM中,先设置属性在加入,无效;
// 2、src属性需要像下面的方式添加,上面的两种方式添加,无效;
imgObj.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)";
imgObj.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = dataURL;

}
});
});
【html代码】:
<input id="file_upload" type="file" />
<div class="image_container">
<img id="preview" width="60" height="60">
</div>

【注】下面所说的只能用flash实现太过时,太不靠谱,上传到后台回传是正解,不过不满足你只能用前台写预览!

追问
确实可行
追答
没任何问题,必须可行!!!!如果没问题,请采纳,算是对我的鼓励!!!
所定0D
2015-07-24 · 超过34用户采纳过TA的回答
知道答主
回答量:101
采纳率:0%
帮助的人:62.8万
展开全部

function getObjectURL(file) {
var url = null ; 
if (window.createObjectURL!=undefined) { // basic
url = window.createObjectURL(file) ;
} else if (window.URL!=undefined) { // mozilla(firefox)
url = window.URL.createObjectURL(file) ;
} else if (window.webkitURL!=undefined) { // webkit or chrome
url = window.webkitURL.createObjectURL(file) ;
}
return url ;
}
$("#imgFile").change(function(){
var objUrl;
if(navigator.userAgent.indexOf("MSIE")>0){
objUrl = this.value;
}else
objUrl = getObjectURL(this.files[0]);
console.log("objUrl = "+objUrl) ;
}) ;

 不客气,说拿不到都是瞎bb

追问
我再测试一下
追答
imgFile是控件的id,objUrl就是图片的url,你报的错没怎么看得懂。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2015-07-24 · TA获得超过1232个赞
知道大有可为答主
回答量:1245
采纳率:0%
帮助的人:1426万
展开全部
要支持ie8预览图片的话 没有简单的代码, 一般用flash实现 或者先上传后再获取地址. 要是ie9+ 则可以直接用html5实现 简单很多.
追问
愿闻其详
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zouqi8023fuyan
2015-07-24 · TA获得超过199个赞
知道小有建树答主
回答量:444
采纳率:75%
帮助的人:143万
展开全部
var src=$("#fileID").val();
$("#imageID").attr("src",src);
更多追问追答
追问
这样不行的,好像要new Image(),请问你能不能用带有new Image的来做?
追答
那就这样 
var src=$("#fileID").val();
var html ="";
$("divID").html(html );
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
你滚揍
2017-10-26
知道答主
回答量:3
采纳率:0%
帮助的人:2098
引用xpy0928的回答:
是只能用前台jquery实现???还要实现预览???还要兼容IE 7+????
代码如下利用html5实现:几乎兼容所有主流浏览器,当然IE必须是IE 6以上【jquery代码】$(function() {$("#file_upload").change(function() {var $file = $(this);var fileObj = $file[0];var windowURL = window.URL || window.webkitURL;var dataURL;var $img = $("#preview");if(fileObj && fileObj.files && fileObj.files[0]){dataURL = windowURL.createObjectURL(fileObj.files[0]);$img.attr('src',dataURL);}else{dataURL = $file.val();var imgObj = document.getElementById("preview");// 两个坑:// 1、在设置filter属性时,元素必须已经存在在DOM树中,动态创建的Node,也需要在设置属性前加入到DOM中,先设置属性在加入,无效;// 2、src属性需要像下面的方式添加,上面的两种方式添加,无效;imgObj.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)";imgObj.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = dataURL;}});});【html代码】:<input id="file_upload" type="file" /><div class="image_container"><img id="preview" width="60" height="60"></div>【注】下面所说的只能用flash实现太过时,太不靠谱,上传到后台回传是正解,不过不满足你只能用前台写预览!
展开全部
为什么我用这段代码 还是报错啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式