我试图弄清楚如何将我存储在数据库中的文件放到文件系统上。我到处寻找,但我能找到的只是将图片拉出来并通过Response提供服务。任何人都可以指出我的教程方向或提供一些关于哪条路的输入?
答案 0 :(得分:1)
从通过Web提供文件的角度来看,图像的过程与任何文件类型的过程完全相同。唯一的区别是响应头中的内容类型。 (对于PDF,它将是application/pdf
。)
了解通过HTTP绝对没有“文件”的概念。您所拥有的只是请求和响应,每个请求和响应都有标题和数据。无论是图像,PDF,网页,还是任何东西......传递给客户端(浏览器)的响应结构都是完全相同的。标题告诉浏览器它是什么类型的数据以及关于它的各种其他元数据,数据只是发送的“文件”的原始数据。浏览器可以选择如何处理数据。
对于网页,浏览器通常只是呈现它。在其他或未知内容类型的情况下,浏览器通常提示用户将其保存为文件。 (请注意,也可以在响应的标题中建议文件名。)
修改:回复您对@Pete M的回答的评论......
这个过程仍然非常相似。作为电子邮件附件的“文件”与HTTP上的“文件”的工作方式大致相同。基本上,您只需要数据流和内容类型。构建MailMessage
对象时,请查看Attachment
对象。当您从数据库中提取PDF文件时(就像从数据库中提取图像以提供给浏览器客户端一样),将数据流设置为附件对象上的ContentStream
。然后还在附件对象上设置ContentType
(再次,application/pdf
)和Name
,您应该能够将其作为MailMessage
的一部分发送。
您可能还需要在Attachment
上设置更多选项。测试将指示您需要如何明确地使用编码等内容。如果您在尝试时可以共享一些代码,我们可以帮助您完成该代码。
答案 1 :(得分:0)
与写出任何其他类型的文件没什么不同。如果您找到一个好的“读/写文本文件”教程,它将是完全相同的过程,您只需从数据库中获取初始流。
我可以问你为什么要这样做吗?如果它是用于缓存的,那么你可以将它返回给要求它的用户,我会首先考虑其他选项。要求放入磁盘通常会导致性能瓶颈。