您的位置:首页 > 编程语言 > ASP

asp.net 一次请求返回多张图片

2013-03-28 10:55 204 查看
这个也不知道当时谁提的一个小需求,想在一次请求里边,把所有图片返回了,然后再加载,- - 难道直接用img标签不好么。。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="jquery-1.6.4.min.js" type="text/javascript"></script>
<script src="Base64.js" type="text/javascript"></script>
<script src="Deflate.js" type="text/javascript"></script>
<script src="PNG.js" type="text/javascript"></script>
<script type="text/javascript">
var Sys = {};
var ua = navigator.userAgent.toLowerCase();
if (window.ActiveXObject)
Sys.ie = ua.match(/msie ([\d.]+)/)[1];

$(document).ready(function () {
$.get("/ImageHandler.ashx", "", function (data) {
if (Sys.ie) {
var xml_dom = new ActiveXObject("MSXML2.DOMDocument");

var tmpNode1 = xml_dom.createElement("tmpNode1");
tmpNode1.dataType = "bin.base64";
tmpNode1.nodeTypedValue = data.split(';')[0];
$("#img1").attr("src", " data:png/jpeg;base64," + tmpNode1.text.replace(/\n/g, ""));

var tmpNode2 = xml_dom.createElement("tmpNode2");
tmpNode2.dataType = "bin.base64";
tmpNode2.nodeTypedValue = data.split(';')[1];

$("#img2").attr("src", " data:png/jpeg;base64," + tmpNode2.text.replace(/\n/g, ""));
} else {
$("#img1").attr("src", "data:png/jpeg;base64," + data.split(';')[0]);
$("#img2").attr("src", "data:png/jpeg;base64," + data.split(';')[1]);
}

//alert($("#img1").attr("src"));
//alert($("#img2").attr("src"));
});

});
</script>
</head>
<body>
<img id="img1" width="250" height="250"/>
<img id="img2" width="250" height="250"/>
</body>
</html>


后台:

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;
using System.Web;
using System.IO;
using System.Text;

namespace JsTest
{
/// <summary>
/// ImageHandler 的摘要说明
/// </summary>
public class ImageHandler : IHttpHandler
{

public void ProcessRequest(HttpContext context)
{
var picapath = context.Server.MapPath("~/images/a.png");
var picbpath = context.Server.MapPath("~/images/b.png");

var resulta = GetBase64String(picapath);
var resultb = GetBase64String(picbpath);

context.Response.Write(resulta + ";" + resultb);
//            context.Response.BinaryWrite(data);
//            context.Response.ContentType = "image/jpeg";
}

private static string GetBase64String(string picpath)
{
var img = Image.FromFile(picpath);
var stream = new MemoryStream();
img.Save(stream, ImageFormat.Jpeg);
img.Dispose();
var data = new Byte[stream.Length];
stream.Position = 0;
stream.Read(data, 0, data.Length);
stream.Close();

//            var stream = new FileStream(picpath, FileMode.Open);
//            var reader = new BinaryReader(stream);
//            stream.Position = 0;
//            var data = new Byte[stream.Length];
//            reader.Read(data, 0, data.Length);
//            reader.Close();
//            stream.Close();

var result = Convert.ToBase64String(data);
return result;
}

public bool IsReusable
{
get
{
return false;
}
}
}
}


下载地址:一次请求多张图片
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: