Also it causes a Force download and you can enetr your own file attributes in Author,Title,Summary,Comments etc ..
When you visit the any Page and save Image:
Below code will Save the User Name , the Ip Address ,time and the name of the image with force downlaod.
This string can be added in any Attribute : Author,Title,Summary,Comments etc ..
Remember to FInd the User Yourself by MemberShip API
Clicking on any the Image button,or Datagrid,Gridview,Listview having Image Button:
pass the Query string to next page :
asp:ImageButton ID="imgButton" runat="server"
ImageUrl='%# Eval("imageid", "Gallery/Thumbnail/{0}.jpg") %' OnClick="imgButton_Click"
protected void imgButton_Click(object sender, ImageClickEventArgs e)
{
ImageButton img = (ImageButton)sender;
HiddenField HF = (HiddenField)Page.Master.FindControl("HiddenField1");
HF.Value = img.ImageUrl.ToString();
Response.Redirect("openImage.aspx?ID=" + HF.Value + "");
}
//and on second page Page load event :
protected void Page_Load(object sender, EventArgs e)
{
string Img = Request.QueryString["ID"].ToString();
System.Web.UI.WebControls.Image im = new System.Web.UI.WebControls.Image();
string strUrl = Img.Split('/')[2].ToString();
string newImgUrl = strUrl.Replace(strUrl, "Gallery/HiRes/" + strUrl);
im.ImageUrl = newImgUrl;
im.AlternateText = Img;
MembershipUser Usr = Membership.GetUser();
string strIpAddress = Request.UserHostAddress;
string strImageName = im.ImageUrl;
DateTime Time = DateTime.Now.ToLocalTime();
string strDestFileName = Usr + " - "+ strIpAddress + " - " + Time + " - " + System.IO.Path.GetFileName(strImageName);
WriteProperties(strDestFileName , strImageName);
Form.Controls.Add(im);
}
private void WriteProperties(string text ,string ImageName)
{
System.Drawing.Image imImage = System.Drawing.Image.FromFile(Server.MapPath("~/") + ImageName);
System.Drawing.Imaging.PropertyItem[] AllProperties = imImage.PropertyItems;
System.Drawing.Imaging.PropertyItem NewProp = AllProperties[0];
byte[] Value = System.Text.ASCIIEncoding.Unicode.GetBytes(text);
NewProp.Id = 40092; // Comments
NewProp.Len = Value.Length;
NewProp.Value = Value;
NewProp.Type = 1;
imImage.SetPropertyItem(NewProp);
ShowImage(imImage);
}
private void ShowImage(System.Drawing.Image bmp)
{
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ContentType = "image/jpeg";
HttpContext.Current.Response.AppendHeader("Content-disposition", "attachment; filename=");
bmp.Save(HttpContext.Current.Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);
bmp.Dispose();
HttpContext.Current.Response.End();
}
Thanks,
Nitin Sharma