1

我在数据库中有一个附件表,其中有一个 varbinary 格式的文件名和文件数据。在 c# 端,我需要将此数据转换为字符串,并根据 MIMEType 创建一个可下载的 .xls/.pdf 文件。做这个的最好方式是什么?我可以使用 ActionLink 来执行此操作吗?我是使用 MVC 的新手,不知道最好的方法。任何建议,将不胜感激。

4

3 回答 3

1

我会绕过转换为字符串,只担心返回正确的 mime 类型。

看看这个问题:

byte[] 到 MVC 3 中的文件类型

您只需要确定内容类型即可设置 MIME 类型。

于 2012-04-12T19:00:54.290 回答
1

我可以使用 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,因为大多数浏览器都可以打开它,而对于其他文件类型,请使用 .pdf attachment

于 2012-04-12T19:08:33.647 回答
0

我以前不得不做同样的事情。我将返回一个 FileContentResult,然后使用 Urlmon.dll 来确定要传递给Controller 类上的 File 方法http://msdn.microsoft.com/en-us/library/dd460208.aspx的 mime 类型,并使用您从数据库中获得的 byte[] 数据,以及 Urlmon.dll 返回的 mime 类型,http ://pinvoke.net/default.aspx/urlmon.FindMimeFromData ,pinvoke。

于 2012-04-12T19:53:31.220 回答