【问题标题】:Create an attachment from varbinary data and make it downloadable从 varbinary 数据创建附件并使其可下载
【发布时间】:2012-04-12 18:50:41
【问题描述】:

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

【问题讨论】:

    标签: c# asp.net-mvc


    【解决方案1】:

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

    看看这个问题:

    byte[] to File Type in MVC 3

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

    【讨论】:

    • 我知道 MIME 类型,因为它也为我存储在数据库中。谢谢!
    • 你会不会碰巧知道如何通过 JavaScript 做到这一点?我一直在尝试将其合并,但是,我将不得不根据文件名的数量动态创建指向文件名的链接。创建链接后,我需要对他们的点击事件执行此操作。
    【解决方案2】:

    我可以使用 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。

    【讨论】:

      【解决方案3】:

      我以前也做过同样的事情。我将返回一个 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。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多