IE 中上传前按比例预览图片
引言
在上一篇 jQuery + ashx 实现图片按比例预览、异步上传及显示 中核心是使用 HTML5 的 FileReader对象来实现。
但现在恶心的 IE 浏览器对HTML5支持太差,遂请教 google 大师,发现 juqey 中有个jquery.ajaxfileupload.js插件可实现无刷性上传文件,
此插件的原理是在文档中创建iframe和form,然后再将文件上传到服务器进行处理,并异步返回信息到客户端。
参考资料地址:
- Asp.net使用ajax无刷新上传文件jquery ajaxFileUpload.js 插件在IE9中的bug修复
代码下载ajaxfileupload 插件及示例 (官网的jquery ajaxfileupload 插件测试未通过)。
1.修改上一篇中的 readURL 函数如下:
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.IO; /// <summary> /// uploader 的摘要说明 /// </summary> public class uploader : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; context.Response.Charset = "utf-8"; try { HttpPostedFile file = context.Request.Files[0]; byte[] buffer = null; string base64 = "data:image/jpeg;base64,"; if (file != null) { buffer = getByte(file); base64 += Convert.ToBase64String(buffer); } //context.Response.Write(base64); context.Response.Write(@base64); } catch (Exception ex) { context.Response.Write("0"); } } private byte[] getByte(HttpPostedFile file) { byte[] buffer = new byte[file.ContentLength]; file.InputStream.Read(buffer, 0, buffer.Length); return buffer; } public bool IsReusable { get { return false; } } }