【问题标题】:Open a file from varbinary data using asp.net使用 asp.net 从 varbinary 数据打开文件
【发布时间】:2013-06-27 15:08:41
【问题描述】:

我只需要回答下面提到的问题。但首先让我为您提供场景

场景

我创建了一个基于 webforms 的 asp.net 应用程序。以下是应用程序的组件

  1. 具有 Varbinary(MAX) 列的表。
  2. 带有网格视图和文件上传控件的网页。

我已经编写了使用 fileupload 组件上传/下载任何文件的代码。这工作得很好。

问题。

我正在研究提供打开文件功能的可能性。澄清一下,打开文件(与下载文件不同)是根据文件类型打开文件 IE 如果 .xls 文件然后是 Excel,.doc 然后是 word 等。换句话说,使用注册程序打开文件。

这可以在 asp.net 应用程序中实现吗?
是否有防止这种情况发生的安全考虑? (似乎很有可能)

事实上,我是一位经验丰富的 winforms 程序员,但我对 asp.net 比较陌生。

欢迎任何答案/提示/附加信息

提前致谢

游牧民族

【问题讨论】:

    标签: asp.net webforms shellexecute varbinary


    【解决方案1】:

    检查以下 StackOverflow 答案:C# Asp.net write file to client

    这些是您需要的 3 行:

    Response.ContentType = "text/plain";
    Response.OutputStream.Write(buffer, 0, buffer.Length);
    Response.AddHeader("Content-Disposition", "attachment;filename=yourfile.txt");
    

    重要的一点是,您需要针对不同的文件扩展名研究不同的内容类型。 XLS/X、DOC/X、PDF 等都有不同的 ContentType 字符串(很容易搜索)。

    好消息是,您可能已经将文件名存储在数据库中,因此您可以使用字符串操作来获取文件扩展名,然后从数据库列表扩展名和 ContentType 中查找它,或者只是创建一个列出并在其中“硬编码”它。

    【讨论】:

    • 哦,您可能想研究 SQL Server 中的 FileStream 对象。它专为文件存储而设计,在许多情况下针对 varbinary 的性能进行了优化。
    • 谢谢加里森。这不是用来下载文件的吗?我想使用关联/注册的应用程序或程序打开文件。如果我在某个地方出错了,请告诉我。谢谢
    • 这将在浏览器中生成一个“保存”菜单,用户可以选择打开或保存它。您是否尝试在浏览器中显示它?
    • 好的。我明白。我要试试这个。感谢您的澄清回答。不,我不想在浏览器中打开它。我只是想使用注册的应用程序打开它。
    猜你喜欢
    • 1970-01-01
    • 2011-10-07
    • 2014-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多