【发布时间】:2012-04-12 18:50:41
【问题描述】:
我在数据库中有一个附件表,其中有一个 varbinary 格式的文件名和文件数据。在 c# 端,我需要将此数据转换为字符串,并根据 MIMEType 创建一个可下载的 .xls/.pdf 文件。做这个的最好方式是什么?我可以使用 ActionLink 来执行此操作吗?我是使用 MVC 的新手,不知道最好的方法。任何建议将不胜感激。
【问题讨论】:
标签: c# asp.net-mvc
我在数据库中有一个附件表,其中有一个 varbinary 格式的文件名和文件数据。在 c# 端,我需要将此数据转换为字符串,并根据 MIMEType 创建一个可下载的 .xls/.pdf 文件。做这个的最好方式是什么?我可以使用 ActionLink 来执行此操作吗?我是使用 MVC 的新手,不知道最好的方法。任何建议将不胜感激。
【问题讨论】:
标签: c# asp.net-mvc
【讨论】:
我可以使用 ActionLink 来执行此操作吗?
是的。
在 c# 端,我需要将此数据转换为字符串,并取决于 MIMEType,创建一个可下载的 .xls/.pdf 文件。
您将 Content-Disposition (http://msdn.microsoft.com/en-us/library/ms526989(v=exchg.10).aspx) 添加到响应标头。
内容处置:附件
指定为包含附件的正文部分需要显示用户操作。并且通常从消息中分离出来。它们通常存储为文件以供后续访问。此标头的可选参数有:文件名、创建日期、修改日期、读取日期和大小。
内容处置:内联
打开消息时向用户显示内嵌内容。内联正文部分将按照它们在消息中出现的顺序显示,但要遵守多部分内容类型的适用规则。如果多部分正文部分具有内联标题,则内联名称适用于整个多部分,而不是其子部分。
查看代码:https://stackoverflow.com/a/9610656/1241400
您可以将inline 用于*.pdf,因为大多数浏览器都可以打开它,而对于其他文件类型,请使用attachment。
【讨论】:
我以前也做过同样的事情。我将返回一个 FileContentResult,然后使用 Urlmon.dll 确定要传递给 Controller 类上的 File 方法 http://msdn.microsoft.com/en-us/library/dd460208.aspx 的 mime 类型,其中包含您从 DB 获得的 byte[] 数据,以及由返回的 mime 类型Urlmon.dll,http://pinvoke.net/default.aspx/urlmon.FindMimeFromData,pinvoke。
【讨论】: