今天遇到一问题,点击下载按钮,提示用户下载效果。但是平常的图片,你如果直接给a标签赋值的话,会直接跳转到图片的路径下面,直接显示图片,不会下载图片。
经过自己研究,代码如下:
在需要下载的页面,设置如下代码: '<a href="/download.aspx?FilePath=' + (row.FILEPATH + row.FILENAME) + '&Name=' + row.NAME + '">下载</a>'
在download.aspx页面的后台.cs文件中我们的代码是:
protected void Page_Load(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(Request.Params["FilePath"]))
{
DownLoad(Request.Params["FilePath"], Request.Params["Name"]);
}
}
private void DownLoad(string filepath, string name)
{
string filePath = Server.MapPath(filepath);//路径
Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(name) + ".jpg");
Response.ContentType = "image/jpeg";
Response.ContentEncoding = Encoding.GetEncoding("utf-8");
Response.BinaryWrite(GetPictureData(filePath));
Response.End();
}
public byte[] GetPictureData(string imagepath)
{
/**/
////根据图片文件的路径使用文件流打开,并保存为byte[]
FileStream fs = new FileStream(imagepath, FileMode.Open);//可以是其他重载方法
byte[] byData = new byte[fs.Length];
fs.Read(byData, 0, byData.Length);
fs.Close();
return byData;
}