将PDF文件从DB下载到本地服务器以进行下载

时间:2011-04-20 16:03:53

标签: c# asp.net sql

我试图弄清楚如何将我存储在数据库中的文件放到文件系统上。我到处寻找,但我能找到的只是将图片拉出来并通过Response提供服务。任何人都可以指出我的教程方向或提供一些关于哪条路的输入?

2 个答案:

答案 0 :(得分:1)

从通过Web提供文件的角度来看,图像的过程与任何文件类型的过程完全相同。唯一的区别是响应头中的内容类型。 (对于PDF,它将是application/pdf。)

了解通过HTTP绝对没有“文件”的概念。您所拥有的只是请求和响应,每个请求和响应都有标题和数据。无论是图像,PDF,网页,还是任何东西......传递给客户端(浏览器)的响应结构都是完全相同的。标题告诉浏览器它是什么类型的数据以及关于它的各种其他元数据,数据只是发送的“文件”的原始数据。浏览器可以选择如何处理数据。

对于网页,浏览器通常只是呈现它。在其他或未知内容类型的情况下,浏览器通常提示用户将其保存为文件。 (请注意,也可以在响应的标题中建议文件名。)

修改:回复您对@Pete M的回答的评论......

这个过程仍然非常相似。作为电子邮件附件的“文件”与HTTP上的“文件”的工作方式大致相同。基本上,您只需要数据流和内容类型。构建MailMessage对象时,请查看Attachment对象。当您从数据库中提取PDF文件时(就像从数据库中提取图像以提供给浏览器客户端一样),将数据流设置为附件对象上的ContentStream。然后还在附件对象上设置ContentType(再次,application/pdf)和Name,您应该能够将其作为MailMessage的一部分发送。

您可能还需要在Attachment上设置更多选项。测试将指示您需要如何明确地使用编码等内容。如果您在尝试时可以共享一些代码,我们可以帮助您完成该代码。

答案 1 :(得分:0)

与写出任何其他类型的文件没什么不同。如果您找到一个好的“读/写文本文件”教程,它将是完全相同的过程,您只需从数据库中获取初始流。

我可以问你为什么要这样做吗?如果它是用于缓存的,那么你可以将它返回给要求它的用户,我会首先考虑其他选项。要求放入磁盘通常会导致性能瓶颈。