Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript IE中带预览的图像上传_Javascript_Asp.net Mvc 3_File Upload - Fatal编程技术网

Javascript IE中带预览的图像上传

Javascript IE中带预览的图像上传,javascript,asp.net-mvc-3,file-upload,Javascript,Asp.net Mvc 3,File Upload,我正在进行图像上传,我必须在上传前预览图像(比如在twitter.com上实现的显示图片) 我写了一些JS代码,在chrome和Firefox上运行良好,但在IE(8或9)上不起作用 函数预览(输入){ if(input.files&&input.files[0]){ var reader=new FileReader(); reader.onload=函数(e){ $('previmg').attr('src',e.target.result); } reader.readAsDataURL(

我正在进行图像上传,我必须在上传前预览图像(比如在twitter.com上实现的显示图片)

我写了一些JS代码,在chrome和Firefox上运行良好,但在IE(8或9)上不起作用

函数预览(输入){
if(input.files&&input.files[0]){
var reader=new FileReader();
reader.onload=函数(e){
$('previmg').attr('src',e.target.result);
}
reader.readAsDataURL(input.files[0]);
}
}
我已经调试了IE中的代码。input.files在IE中显示为空,有人能告诉解决方案或任何其他解决方案来实现该功能吗
这在IE上不起作用,因为代码依赖于IE不支持的HTML5文件API。它将从IE10开始支持它。因此,如果您需要支持低于10的IE,您可以使用一些现有的AJAX上传组件(Uploadify、Plupload、Valums AJAX upload、Bleuimp等)将文件上传到服务器,在服务器上生成并存储缩略图,并使用JSON将保存图像的url发送到客户端,以便客户端可以使用
标记显示它。事实上,由于IE支持,您不需要将上传的文件存储到服务器来生成预览。您可以直接从格式为数据URI方案的预览控制器操作返回生成的缩略图,以便在客户端上显示

另一个解决方案,如果你没有时间和资源来实现这个功能,就是简单地告诉你的用户,如果他们想得到一个实时预览的图像,他们应该考虑使用一个不同的Web浏览器,因为你的网站不支持IE,为此,

但是使用IE

document.getElementById('previmg').src = "file:///" + input.value;

函数加载名(img、previewName){
var-isIE=false;
if(jQuery.browser.msie){
伊西=真;
}
var路径=img.value;
var ext=path.substring(path.lastIndexOf('.')+1.toLowerCase();
如果(ext=“gif”| |“jpeg”| |“jpg”| |“png”){
如果(isIE){
document.getElementById(previewName.id.toString()).src=path;
返回;
}否则{
if(img.files[0]){
var reader=new FileReader();
reader.onload=函数(e){
$('#'+previewName).attr('src',e.target.result);
}
reader.readAsDataURL(img.files[0]);
}
}
}否则{
警报(“您必须选择有效的图像文件!”);
}
}
var loadImageFile=(函数(){
if(window.FileReader){
var opreviewmg=null,oFReader=new window.FileReader(),
rFilter=/^(3)以下::::::图像\/bmp(医学院校)图像\/bmp(医学院校)图像\/bmp(医学院校)图像\/以下以下以下::::::::::::::::::图像\/bmp图像\/bmp(医学院校)图像\/医学院校图像\/医学院校图像\/中美中美中美两国的图像\/中学中学中学中学化学化学化学化学化学化学化学化学化学化学化学化学中学中学中学中学中学学生学生学生学生的图像图像\/图像\/图像\/图像\/图像\/图像\/医学医学医学院校学生学生学生学生学生学生学生学生学生学生学生学生学生学生学生学生学生学生学生学生学生学生学生学生学生学生学生学生图像\/图像\/图像\/图像\/中学中学中学中学中学中学中学化学化学化学化学化学化学化学化学化学化学化学化学化学化学中学中学中学中学中学中学中学中学中学中学中学化学化学化学化学化学化学化学化学化学化学化学化学化学化学化学化学化学化学化学化学化学化学化学化学x \-rgb |图像\/x \-xbitmap |图像\/x \-xpixmap|图像\/x \-xwindowdump)$/i;
oFReader.onload=函数(OFRENT){
如果(!opreviewmg){
var newPreview=document.getElementById(“imagePreview”);
opreviewmg=新图像();
opreviewmg.style.width=(newPreview.offsetWidth.toString()+“px”;
opreviewmg.style.height=(newPreview.offsetHeight.toString()+“px”;
newPreview.appendChild(opreviewmg);
}
opreviewmg.src=of report.target.result;
};
返回函数(){
var aFiles=document.getElementById(“imageInput”).files;
如果(aFiles.length==0){return;}
如果(!rFilter.test(aFiles[0].type)){alert(“必须选择有效的图像文件!”);return;}
readAsDataURL(aFiles[0]);
}
}
如果(navigator.appName==“Microsoft Internet Explorer”){
返回函数(){
document.getElementById(“imagePreview”).filters.item(“DXImageTransform.Microsoft.AlphaImageLoader”).src=document.getElementById(“imageInput”).value;
}
}
})();

#图像预览
{
宽度:260px;
高度:240px;
浮动:对;
过滤器:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale);
}



尝试将
enctype=“multipart/form data”
添加到您的视图表单中。只需尝试一下……IE的不同版本-可能?
document.getElementById('previmg').src = "file:///" + input.value;