2009-08-31 38 views
2

我已经将文本文件上传到我的数据库到图像字段。问题是当我尝试检索文件(使用户能够通过单击链接下载它)。当我尝试下载它时,它只是填充了网页的内容(所有的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); 
} 

回答

2

听起来好像你已经有太多的剩余页面去了客户端。您需要清除响应,然后关闭它;尝试:

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)来做到这一点 - 因为它不包括常规页面标记。

+0

我已经添加了.Clear()和.close(),但现在它不要求我保存或打开文件,只是继续加载。我想这是因为我正在关闭文件,在用户有选择保存它之前? – Dofs 2009-08-31 13:10:56

+0

我发现我应该写sender.Respons.Close(),然后我没有得到所有的HTML。但是现在文件只包含一个字符串“System.Byte []”而不是实际的内容? – Dofs 2009-08-31 13:40:36

+0

我会用新的问题做一个新的线程。 – Dofs 2009-08-31 13:56:59