从数据库图像字段保存文件
问题描述:
我已经将文本文件上传到我的数据库到图像字段。问题是当我尝试检索文件(使用户能够通过单击链接下载它)。当我尝试下载它时,它只是填充了网页的内容(所有的html都被填充到文本文件中)。我正在考虑它是我尝试下载文件的方式的错误。是不是可以将内容流式传输到一个文件,而无需先将其保存到临时文件中?从数据库图像字段保存文件
我使用的代码如下所示。 UploadFiles是我的课程,其中包含数据,ID,名称等。
public void DownloadUploadedFile(Page sender, UploadFiles uf)
{
sender.Response.ContentType = uf.FileType; // the binary data
sender.Response.AddHeader("Content-Disposition", "attachment; filename=" + uf.FileName);
sender.Response.BinaryWrite(uf.FileData);
}
答
听起来好像你已经有太多的剩余页面去了客户端。您需要清除响应,然后关闭它;尝试:
sender.Response.Clear();
sender.Response.ContentType = uf.FileType; // the binary data
sender.Response.AddHeader("Content-Disposition", "attachment; filename="
+ uf.FileName);
sender.Response.BinaryWrite(uf.FileData);
sender.Response.Close();
另外,使用处理程序(ashx)来做到这一点 - 因为它不包括常规页面标记。
我已经添加了.Clear()和.close(),但现在它不要求我保存或打开文件,只是继续加载。我想这是因为我正在关闭文件,在用户有选择保存它之前? – Dofs 2009-08-31 13:10:56
我发现我应该写sender.Respons.Close(),然后我没有得到所有的HTML。但是现在文件只包含一个字符串“System.Byte []”而不是实际的内容? – Dofs 2009-08-31 13:40:36
我会用新的问题做一个新的线程。 – Dofs 2009-08-31 13:56:59