Save Image

D

David W. Simmonds

Is there a way I can have a button on a ASP.NET form that when clicked will
allow the user to save the image to a file on the client side? I know that
the user can simply rclick the image and select Save Target as..., but the
button might be a more intuitive way.
 
M

Michael Pearson

You could make the button do a response.redirect("insert path to image
here")

Michael
 
D

David W. Simmonds

That just brings up another instance of the image in the window. It does not
prompt the user to save it. Does anyone know how I might do this or am I
stuck with the standard method of having the user rclick the image and
select from the menu?
 
S

Steven Cheng[MSFT]

Hi David,


Thanks for posting in the community! My name is Steven, and I'll be
assisting you on this issue.
From your description, you'd like to let the user manually click a button
to download a certain image file. Just like they use the "save as" menu in
the IE's content menu ,yes?
If there is anything I misunderstood, please feel free to let me know.

As for this problem, I think we can implement this by setting the page's
Response object's "ContentType" and Header member. First we set the
Response.ContentType as "Image/GIF" or "Image/JPEG" to specify the response
stream as a image. Then, add a Header item into the response using the
Response.AddHeader method to streaming the image as an attachment to the
browser , then in the client the browser will popup a dialog to let the
user choose open or save the certain file. For example:

Response.ContentType = "Image/GIF";
Response.AddHeader( "Content-Disposition",
"attachment;filename=\"Microsoft.gif\"" );
Response.WriteFile("Microsoft.gif"); // write the file to the response
stream

Also, here is an sample page, you may have a try on it:
-----------------------aspx page-----------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>Download</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema"
content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<table width="500" align="center">
<tr>
<td><FONT face="ËÎÌå">
<asp:Label id="lblMessage" runat="server" Text="Click the button to
download the image!"></asp:Label></FONT></td>
</tr>
<tr>
<td>
<asp:Button id="btnDownload" runat="server"
Text="Download"></asp:Button></td>
</tr>
</table>
</form>
</body>
</HTML>


-----------------------code behind page class----------------------

public class Download : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button btnDownload;
protected System.Web.UI.WebControls.Label lblMessage;

private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
}

#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.btnDownload.Click += new
System.EventHandler(this.btnDownload_Click);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void btnDownload_Click(object sender, System.EventArgs e)
{
Response.ClearHeaders();
Response.ClearContent();
Response.Clear();
Response.ContentType = "Image/GIF";

Response.AddHeader("Content-Disposition","attachment;filename=\"MS.gif\"");
Response.WriteFile(Server.MapPath("MS.gif"));
Response.End();
}
}

If you have any further questions, please feel free to post here.



Regards,

Steven Cheng
Microsoft Online Support

Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)
 
D

David W. Simmonds

That works great. Thanks.

Steven Cheng said:
Hi David,


Thanks for posting in the community! My name is Steven, and I'll be
assisting you on this issue.
From your description, you'd like to let the user manually click a button
to download a certain image file. Just like they use the "save as" menu in
the IE's content menu ,yes?
If there is anything I misunderstood, please feel free to let me know.

As for this problem, I think we can implement this by setting the page's
Response object's "ContentType" and Header member. First we set the
Response.ContentType as "Image/GIF" or "Image/JPEG" to specify the response
stream as a image. Then, add a Header item into the response using the
Response.AddHeader method to streaming the image as an attachment to the
browser , then in the client the browser will popup a dialog to let the
user choose open or save the certain file. For example:

Response.ContentType = "Image/GIF";
Response.AddHeader( "Content-Disposition",
"attachment;filename=\"Microsoft.gif\"" );
Response.WriteFile("Microsoft.gif"); // write the file to the response
stream

Also, here is an sample page, you may have a try on it:
-----------------------aspx page-----------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>Download</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema"
content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<table width="500" align="center">
<tr>
<td><FONT face="ËÎÌå">
<asp:Label id="lblMessage" runat="server" Text="Click the button to
download the image!"></asp:Label></FONT></td>
</tr>
<tr>
<td>
<asp:Button id="btnDownload" runat="server"
Text="Download"></asp:Button></td>
</tr>
</table>
</form>
</body>
</HTML>


-----------------------code behind page class----------------------

public class Download : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button btnDownload;
protected System.Web.UI.WebControls.Label lblMessage;

private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
}

#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.btnDownload.Click += new
System.EventHandler(this.btnDownload_Click);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void btnDownload_Click(object sender, System.EventArgs e)
{
Response.ClearHeaders();
Response.ClearContent();
Response.Clear();
Response.ContentType = "Image/GIF";

Response.AddHeader("Content-Disposition","attachment;filename=\"MS.gif\"");
Response.WriteFile(Server.MapPath("MS.gif"));
Response.End();
}
}

If you have any further questions, please feel free to post here.



Regards,

Steven Cheng
Microsoft Online Support

Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top