我在 ASP.Net 中工作以下载图像,我使用以下代码:
代码:
Main Method:
protected void btndownload_Click(object sender, EventArgs e)
{
FlyerBean objFlyerBean = SaveFlyer();
if (objFlyerBean == null)
return;
BindData(objFlyerBean);
string downLoadUrl = CommonUtil.GetBaseUrl() + "Preview/flyerview.aspx?FID=" + objFlyerBean.Id + "&Token=" + objFlyerBean.UserId + "&Size=" +
objFlyerBean.PreviewSize;
int previewWidth = -1;
int previwHeight = -1;
switch (objFlyerBean.PreviewSize)
{
case "8-5X11":
previewWidth = 885;
previwHeight = 980;
break;
case "5X7":
previewWidth = 524;
previwHeight = 814;
break;
case "4X6":
previewWidth = 428;
previwHeight = 696;
break;
}
Thread th = new Thread(delegate()
{
byte[] imgbyte = objScrenShotHelper.GenerateScreenshot(downLoadUrl, previewWidth, previwHeight);
Response.ContentType = "image/png";
Response.AppendHeader("content-disposition", "attachment; filename=" + DateTime.Now.Ticks + ".png");
Response.BinaryWrite(imgbyte);
});
th.SetApartmentState(ApartmentState.STA);
th.Start();
th.Join();
}
Inner Methods:
private FlyerBean SaveFlyer()
{
FlyerBean objFlyerBean = new FlyerBean();
objFlyerBean.Id = string.IsNullOrEmpty(hfFlyerId.Value) ? 0 : Convert.ToInt64(hfFlyerId.Value);
objFlyerBean.Header = flyerHeader.Text.Trim();
objFlyerBean.Caption = flyerCaption.Text.Trim();
objFlyerBean.ChannelId = string.IsNullOrEmpty(hfSelectedChannelId.Value) ? 0 : Convert.ToInt32(hfSelectedChannelId.Value);
objFlyerBean.ChannelColor = hfchannelColor.Value;
objFlyerBean.FlyerImageSize = hfFlyerSize.Value;
objFlyerBean.FlyerLogoImageSize = hfFlyerLogoSize.Value;
if (!string.IsNullOrEmpty(hfImgePath.Value))
{
objFlyerBean.ImagePath = hfImgePath.Value;
objFlyerBean.ImageName = hfImageName.Value;
}
if (!string.IsNullOrEmpty(hflogoPath.Value))
{
objFlyerBean.BusinessLogo = hflogoPath.Value;
objFlyerBean.LogoName = hflogoName.Value;
}
objFlyerBean.BusinessName = flyerBusinessName.Text.Trim();
objFlyerBean.BackGroundColor = hfbgcolor.Value;
objFlyerBean.PreviewSize = hfViewSize.Value;
objFlyerBean.FieldsOrder = hfFieldOrder.Value;
objFlyerBean.UserId = new Guid(Session["user_id"].ToString());
FlyerBean Result = objFlyerHelper.SaveFlyer(objFlyerBean);
hfFlyerId.Value = "0";
if (Result == null)
return Result;
if (Result.Id > 0)
{
hfFlyerId.Value = Result.Id.ToString();
ViewState["flyerId"] = hfFlyerId.Value;
}
return Result;
}
private void BindData(FlyerBean objFlyerBean)
{
if (objFlyerBean != null)
{
SetBreadCrumb(true);
hfFlyerId.Value = objFlyerBean.Id.ToString();
hfHeader.Value = objFlyerBean.Header;
hfCaption.Value = objFlyerBean.Caption;
hfImgePath.Value = objFlyerBean.ImagePath;
hfImageName.Value = objFlyerBean.ImageName;
hfSelectedChannelId.Value = objFlyerBean.ChannelId.ToString();
hfchannelColor.Value = objFlyerBean.ChannelColor;
hfFlyerSize.Value = objFlyerBean.FlyerImageSize;
hfFlyerLogoSize.Value = objFlyerBean.FlyerLogoImageSize;
hflogoPath.Value = objFlyerBean.BusinessLogo;
hflogoName.Value = objFlyerBean.LogoName;
hfBusinessName.Value = objFlyerBean.BusinessName;
hfbgcolor.Value = objFlyerBean.BackGroundColor;
perviewImg.ImageUrl = objFlyerBean.ImagePath;
previewLogo.ImageUrl = objFlyerBean.BusinessLogo;
hfViewSize.Value = objFlyerBean.PreviewSize;
string orderval = "";
foreach (FlyerElementOrderBean objorder in objFlyerBean.ElementOrderList)
{
if (string.IsNullOrEmpty(orderval))
{
orderval = orderval + (objorder.ElementOrder - 1);
}
else
{
orderval = orderval + "," + (objorder.ElementOrder - 1);
}
}
hfFieldOrder.Value = orderval;
}
else
{
SetBreadCrumb(false);
hfFlyerId.Value = "0";
hfHeader.Value = "Sign up for Special Offers";
hfCaption.Value = "and receive a FREE soda with purchase!";
hfSelectedChannelId.Value = "-2";
hfchannelColor.Value = "#f68700";
hfbgcolor.Value = "#ffffff";
hfFlyerSize.Value = "m";
hfFlyerLogoSize.Value = "m";
hfImgePath.Value = CommonUtil.GetBaseUrl() + "images/PrevieImgDefault.png";
hflogoPath.Value = CommonUtil.GetBaseUrl() + "images/PreviewLogo.png";
hfImageName.Value = "PrevieImgDefault.png";
hflogoName.Value = "PreviewLogo.png";
hfBusinessName.Value = "Pizza by Joe";
hfViewSize.Value = "8-5X11";
hfFieldOrder.Value = "0,1,2,3";
}
}
但问题是,在执行相同操作时,我在页面上使用的所有隐藏值的值都丢失了。谁能告诉我这背后的问题或我可以使用的任何替代方案。提前致谢。