6

我在 asp.net 中开发了一个 Web 应用程序,该项目中有一个页面,用户应该选择图片格式(jpeg、jpg、bmp...)的文件,我想在页面中预览图像但我没有'不想将文件发布到服务器我想在客户端处理它我已经通过文件 API 使用 java 脚本函数完成了它但它只适用于 IE9 但大多数客户使用 IE8 原因是 IE8 不支持文件 API有什么方法可以让IE8升级或后面的代码中的一些补丁我的意思是检查浏览器是否是IE并且不支持文件API调用一个自动将IE8升级到IE9的函数。

我不想让用户在我想以编程方式执行的消息中执行此操作!
即使可以安装文件 API 所需的特殊补丁,因为客户认为这是我的应用程序中的错误并且他们的计算机知识很低,我应该怎么做?
我也使用 Async File Upload Ajax Control 但它使用 ajax 解决方案和 HTTP 处理程序以任何方式将文件发布到服务器,但 java 脚本在客户端浏览器中完成所有操作!!!

以下脚本检查浏览器是否支持 API

<script>
if (window.File && window.FileReader && window.FileList && window.Blob) 
  document.write("<b>File API supported.</b>");
else
  document.write('<i>File API not supported by this browser.</i>');
</script>   

以下脚本执行读取和加载图像

function readfile(e1)
{
  var filename = e1.target.files[0]; 
  var fr = new FileReader();
   fr.onload = readerHandler;  
  fr.readAsText(filename); 
} 

HTML 代码:

<input type="file" id="getimage">

<fieldset><legend>Your image here</legend>
    <div  id="imgstore"></div>
</fieldset> 

JavaScript 代码:

<script>
function imageHandler(e2) 
{ 
  var store = document.getElementById('imgstore');
  store.innerHTML='<img src="' + e2.target.result +'">';
}

function loadimage(e1)
{
  var filename = e1.target.files[0]; 
  var fr = new FileReader();
  fr.onload = imageHandler;  
  fr.readAsDataURL(filename); 
}

window.onload=function()
{
  var x = document.getElementById("filebrowsed");
  x.addEventListener('change', readfile, false);
  var y = document.getElementById("getimage");
  y.addEventListener('change', loadimage, false);
}
</script>
4

3 回答 3

10

您不能安装任何特殊的东西来在 IE8 中添加对文件 API 的支持。您可以做的是使用polyfill来在本身不支持它的浏览器中实现此功能。看看这个HTML5 Cross Browser Polyfills列表(你应该在File API / Drag and Drop部分找到适合你的东西)。

于 2012-08-27T10:33:55.420 回答
2

经过一些研究,我发现没有办法在 IE8 中启用文件 API,但是,我有一些东西想与你分享......
不是直接的,IE8 不支持 HTML 5。有 Canvas 插件,还有 Google Chrome Frame,这是一个将 HTML 5 添加到 9 之前的 IE 的插件。
据我了解,Google Chrome Frame 是使用 HTML5 的完美方式。
它将 IE 速度提高了 10 倍,而且它的使用非常简单,我为大家描述一下...
Google Chrome Frame

一个添加到微软浏览器的 Internet Explorer 插件、完整的 HTML 5 支持和 Chrome 的 JavaScript 编译器!稳定版本于 2010 年 9 月 22 日发布,许多网站在其页面中添加了代码。

此插件适用于 Internet Explorer 6、7 和更高版本。谷歌希望打破阻碍 Web 发展的障碍:最常见的浏览器及其与新标准的不兼容性。

当它被识别后,Internet Explorer 将在 Chrome 和 Safari 的渲染引擎 WebKit 下运行,如果 IE 解释器将使用超快的 JavaScript 编译器代替。

这个插件的优点是对 Web 应用程序的兼容性非常好,并且在 Webkit 中集成的 WebGL 将变得更加有用,它让我们在浏览器上拥有 3D 应用程序:一个非常不同的 Web!自 3.7 版起,Firefox 也支持 WebGL。

自2011年5月起,该插件无需管理员权限即可安装,因此旧版IE已合并到服务器,无法更新。

网页代码中的标签将显示一条消息,提示用户下载插件。安装后,IE 将作为 Chrome 运行并支持 HTML 5。

框架的特点

离线模式。和标签。微软还计划在 IE 中实现它们。帆布。WebGL。CSS 3. JavaScript 编译器。酸 3 级的兼容性。见视频。

微软的反应

我们原以为 Microsoft 并没有真正欣赏这种促进 HTML 5 以损害他们自己的解决方案 Silverlight 的举措。该公司强调了一个安全问题:

考虑到插件普遍存在的安全问题,尤其是 Google Chrome,作为插件运行的 Google Chrome Frame 使恶意软件和恶意脚本的攻击区域增加了一倍。

**

镀铬框架。自动安装。-> http://www.google.com/chromeframe/?quickenable=true
Google Chrome 框架代码。-> https://developers.google.com/chrome/chrome-frame/
Chrome 框架:开发者指南。-> http://www.chromium.org/developers/how-tos/chrome-frame-getting-started

**

于 2012-09-05T20:41:15.077 回答
2

这在 IE10 之前对我有用,我对其他所有浏览器都使用https://github.com/eligrey/FileSaver.js,请注意,虽然这并不完美,因为它是 IE,你知道我的意思

希望这可以帮助

/**
 * saves File, pops up a built in javascript file as a download
 * @param {String} filename, eg doc.csv
 * @param {String} filecontent eg "this","is","csv"
 * @param {String} mimetype eg "text/plain"
 */
function saveAs (filename, filecontent, mimetype) {
    var w = window.open();
    var doc = w.document;
    doc.open( mimetype,'replace');
    doc.charset = "utf-8";
    doc.write(filecontent);
    doc.close();
    doc.execCommand("SaveAs", null, filename);
}
于 2014-03-20T12:22:02.777 回答