By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
429,426 Members | 1,721 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 429,426 IT Pros & Developers. It's quick & easy.

Injecting image page element without calling ASPX page?

P: n/a
I'm wondering if there's a solution here -

I have an ASPX page with a sole purpose of scaling an image. The ASPX page
contains a single line with the codebehind tag, and the .cs file contains
the code to read an image, use GDI+ to scale it to a reasonable size, and
emit the image directly (setting content-type on the response and spitting
out the bytes for the image).

What I'd love to do would be to eliminate the ASPX page and be able to call
a routine in my compiled code directly. Since this code will be delivered to
a customer, that would get rid of the extra ASPX page and make it much more
elegant.

But since the ASPX page is called in an "img" tag, I can't see a way to do
this. Obviously, I need the img tag in the display file, but is there a way
to specify that the content comes from code rather than another page? Can
the img tag be runat-server and inject the image directly in codebehind?

Anyone have a clue for me?

Many thanks!

Christopher
Nov 17 '05 #1
Share this Question
Share on Google+
2 Replies


P: n/a
"Christopher Ambler" <ch***@ambler.net> wrote in
news:ud**************@tk2msftngp13.phx.gbl:
But since the ASPX page is called in an "img" tag, I can't see a way
to do this. Obviously, I need the img tag in the display file, but is
there a way to specify that the content comes from code rather than
another page? Can the img tag be runat-server and inject the image
directly in codebehind?


I don't think so... because the browser needs to create a new connection to
download the graphics image. The new connection would contain the binary
image data. If you placed all the code on one page, the binary data would
be mixed in with your html data, thus corrupting the display : (

--
Lucas Tam (RE********@rogers.com)
Please delete "REMOVE" from the e-mail address when replying.
http://members.ebay.com/aboutme/coolspot18/
Nov 17 '05 #2

P: n/a
HttpHandlers I understand - I implemented one to do image download control
(intercepted requests for .JPG and return "Please do not directly access
this image").

So what you're saying is, instead of implemeting an ASPX file with the
codebehind, implement an HttpHandler. Instead of calling an IMG tag with the
ASPX page and the image I want served on the command line, call and IMG tag
with, say, the source as "dir1/dir2/imagename.xxx" where "xxx" is any
extension I want. I could then have the handler intercept that call, parse
the URI to find the image, perform its magic, and return the image.

Nice! I'd not considered this solution. Many thanks!

Christopher

"John Saunders" <jo***********@surfcontrol.com> wrote in message
news:eC**************@tk2msftngp13.phx.gbl...
"Christopher Ambler" <ch***@ambler.net> wrote in message
news:ud**************@tk2msftngp13.phx.gbl...
I'm wondering if there's a solution here -

I have an ASPX page with a sole purpose of scaling an image. The ASPX page contains a single line with the codebehind tag, and the .cs file contains the code to read an image, use GDI+ to scale it to a reasonable size, and emit the image directly (setting content-type on the response and spitting out the bytes for the image).

What I'd love to do would be to eliminate the ASPX page and be able to call
a routine in my compiled code directly. Since this code will be

delivered to
a customer, that would get rid of the extra ASPX page and make it much more
elegant.


You are describing an HttpHandler. See "
Securely Implement Request Processing, Filtering, and Content Redirection
with HTTP Pipelines in ASP.NET"

at(http://msdn.microsoft.com/msdnmag/is...s/default.aspx ). Here's an example .ashx file from that article:

<%@ WebHandler language="C#" class="Pipeline.TimeHandler" %>

using System;
using System.Web;

namespace Pipeline
{

public class TimeHandler : IHttpHandler
{
void ProcessRequest(HttpContext ctx)
{
// set response message MIME type
ctx.Response.ContentType = "text/xml";
// write response message body
ctx.Response.Write("<now>");
ctx.Response.Write(
DateTime.Now.ToString());
ctx.Response.Write("</now>");
}
bool IsReuseable { get { return true; } }
}
}

--
John Saunders
Internet Engineer
jo***********@surfcontrol.com

Nov 17 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.