【发布时间】:2014-02-27 22:20:25
【问题描述】:
我正在使用 VS2012 ASP.NET 网站,并且我有一个 asp.net 页面,我可以在其中将文件上传到文件夹。
当我上传文件时,它将路径存储在 SQL 数据库表字段中,如~/Client_Info/text.docx,并且文件本身保存在一个文件夹中。
现在我想下载我存储的文件,方法是在带有下载链接的网格视图中显示它。但经过一整天的搜索,我无法得到答案。有人可以帮帮我吗?
protected void lnkDownload_Click(object sender, EventArgs e)
{
LinkButton lnkbtn = sender asLinkButton;
GridViewRow gvrow = lnkbtn.NamingContainer as GridViewRow;
int fileid = Convert.ToInt32(gvDetails.DataKeys[gvrow.RowIndex].Value.ToString());
string name, type;
using (SqlConnection con=new SqlConnection(strCon))
{
using (SqlCommand cmd=new SqlCommand())
{
cmd.CommandText = "select FileName, FileType, FileData from FileInformation where Id=@Id";
cmd.Parameters.AddWithValue("@id", fileid);
cmd.Connection = con;
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
if(dr.Read())
{
Response.ContentType = dr["FileType"].ToString();
Response.AddHeader("Content-Disposition",
"attachment;filename=\""
+ dr["FileName"] + "\"");
Response.BinaryWrite((byte[])dr["FileData"]);
Response.End();
}
}
}
}
【问题讨论】:
-
您的代码只是在写出……存储在 [FileData] 列中的任何内容。但是,您说文件本身存储在文件系统中,而数据库表只保存文件信息?您需要先从磁盘读取文件,然后将其写入响应。
标签: asp.net