3

考虑到我的文件存储在数据库中,我如何在 asp.net mvc 应用程序中打开 .docx、.doc、.xls 或 .ppt 文件。我可以通过编写以下行在记事本中打开一个 css 文件

return File(("~/Content/Site.css"), ("text/css"));
4

2 回答 2

1

File 实用程序方法(用于 FileResult)具有采用流或字节数组的重载(您在 db 中的文件可以作为流或字节数组提供。

  var bytes = db.GetFile(); //i'm assuming this method will return a byte array
   return File(bytes, 
     "application/vnd.openxmlformats-officedocument.wordprocessingml.document");

要使用特定文件名下载文件,您可以使用另一个重载。

return File(bytes, 
       "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
        "filename.docx");
于 2012-12-31T08:38:24.370 回答
0

在我看来,您不需要“打开文件”,但您需要客户端能够从您的应用程序下载文件,而不是客户端对下载的文件执行任何操作。在大多数情况下,浏览器会显示一个保存/打开对话框,但这是最终用户客户端的工作(也许他安装了一些插件?),而不是站点。

但是,为了告诉网站提供办公室,这里有一个内容类型列表,您感兴趣的是:

docx -> "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
pptx -> "application/vnd.openxmlformats-officedocument.presentationml.presentation"
xlsx -> "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"

所以你需要做类似(伪代码)的事情

Dictionary<string, string> contentTypes = new Dictionary<string, string>();
contentTypes.Add("docx","application/vnd.openxmlformats-officedocument.wordprocessingml.document");
contentTypes.Add("pptx","application/vnd.openxmlformats-officedocument.presentationml.presentation");
contentTypes.Add("xlsx","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");;

string fileType = ...;

var result = new File(fileContents, contentTypes[fileType],"fileName."+fileType);
return result;
于 2012-12-31T08:50:35.377 回答