我上传了我的文件并将其数据插入到数据库中,现在当我点击我想下载它时。
bytes = (byte[])dsResult.Tables[0].Rows[0]["data"];
contentType.Text = dsResult.Tables[0].Rows[0]["contentType"].ToString();
fileName.Text = dsResult.Tables[0].Rows[0]["name"].ToString();
try
{
Response.Clear();
Response.Buffer = true;
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = contentType.Text;
Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName.Text);
Response.BinaryWrite(bytes);
Response.Flush();
}
catch (Exception ex)
{
throw;
}
它没有丢失任何错误,但它没有下载文件。
答案 0 :(得分:0)
只有在Page_Load
处相应地设置HTML标头时,才会开始下载文件。含义:您无法向用户呈现任何HTML DOM元素,因为这将是' html / text whereas you require
pdf / document or
excel / document`等作为内容 - 类型。
因此,为了简化操作,请将文件传输代码放在新页面中,Page_Load
事件处理文件下载代码。然后,从用户最初所在的页面,让用户点击链接按钮或redirect
他/她到下载页面的内容。
令人惊奇的是,文件传输将在用户实际不必访问其他页面的情况下进行。该文件将被下载,即使您redirect
已下载到下载页面,该用户仍将位于源页面
答案 1 :(得分:0)
从DB下载文件?
您必须将文件从DB
保存到Project Directory Folder
。
您可以将其放在button event
:
string s = "\\Image\\file1.jpg";
Response.Clear();
Response.ClearHeaders();
Response.ClearContent();
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=" + s);
Response.TransmitFile(Server.MapPath("~" + s));
Response.End();
Response.Redirect("RedirectMe.aspx", false);