[英]read image using ashx doesn't work in asp.net
我正在嘗試使用ashx從數據庫加載圖像。
當我使用此代碼時,圖像加載成功
<% <asp:Image ID="Image1" runat="server" ImageUrl='<%# Eval("Id", "~/Handler/CategoryHandler.ashx?catId={0}") %>' />
但是當我使用這段代碼
<%
foreach (ProductCategories VARIABLE in categoriesList)
{
Response.Write("<div class='wrapper-box'>" +
"<a href='product/product.aspx'>" +
"<img src='~/Handler/ProductHandler.ashx?Id="+VARIABLE.Id+"'/>" +
"<p>"+VARIABLE.CategoryName+"</p>" +
"</a>" +
"</div>");
}
%>
圖片未加載。為什么代碼不起作用?
ashx文件是這樣的:
public void ProcessRequest(HttpContext context)
{
// Set up the response settings
context.Response.ContentType = "image/jpeg";
context.Response.Cache.SetCacheability(HttpCacheability.Public);
context.Response.BufferOutput = false;
// Setup the Size Parameter
ImageSize size;
switch (context.Request.QueryString["Size"])
{
case "S":
size = ImageSize.Small;
break;
case "L":
size = ImageSize.Large;
break;
default:
size = ImageSize.Small;
break;
}
// Setup the PhotoID Parameter
Stream stream;
if (context.Request.QueryString["Id"] != null && context.Request.QueryString["Id"] != "")
{
Int32 id = Convert.ToInt32(context.Request.QueryString["Id"]);
stream = Products.GetImageStream(id, size);
//context.Response.AddHeader("content-disposition", String.Format("attachement;filename=\"{0}\"", );
// Get the photo from the database, if nothing is returned, get the default "placeholder" photo
if (stream == null) return;
// Write image stream to the response stream
const int buffersize = 1024 * 16;
byte[] buffer = new byte[buffersize];
int count = stream.Read(buffer, 0, buffersize);
while (count > 0)
{
context.Response.OutputStream.Write(buffer, 0, count);
count = stream.Read(buffer, 0, buffersize);
}
}
}
問題是Response.Write
不會將~
字符擴展為基本URL,因此在頁面的HTML中生成的圖像的URL與此類似:
<img src='~/Handler/ProductHandler.ashx?Id=123' />
為了解決這個問題,必須在使用Response.Write
之前擴展URL:
<%
foreach (ProductCategories VARIABLE in categoriesList)
{
var imgUrl = ResolveUrl("~/Handler/ProductHandler.ashx?Id=" + VARIABLE.Id.ToString());
Response.Write("<div class='wrapper-box'>" +
"<a href='product/product.aspx'>" +
"<img src='" + imgUrl + "'/>" +
"<p>"+VARIABLE.CategoryName+"</p>" +
"</a>" +
"</div>");
}
%>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.