在Asp.Net MVC5中查看网络文件

时间:2019-03-04 18:55:19

标签: c# asp.net asp.net-mvc

我正在实现一个系统,用户可以上载几乎任何文件类型的任意数量的文档以链接到“工作项”。本质上,用户可以生成一个任务,称为工作项,并将任意数量的文件附加到该任务。我已经实现了用于处理工作项本身,上载文件,管理文件(编辑和删除)的组件,但是在查看文件时遇到了问题。

当用户上传文件时,该文件将保存在网络文件夹中。所有用户都具有对该目录中所有文件的读取权限。文件的路径保存在数据库中,我可以通过实体框架访问该数据库。

我当前的问题是我找不到打开这些文件的通用方法。我已经实现了将文件流式传输到浏览器的控制器,但这仅适用于某些文件类型。

具体来说,我已经尝试过:

  • 创建超链接并将文件路径放在href标记中,但这会尝试打开相对于应用程序在Web服务器上位置的文件路径。基本上,它将文件路径附加到当前URL。

    • 示例:

      • href="@Path.Combine(item.PATH, item.NAME)"
    • 输出:

      • href="\\server\myapp\item\3\test.jpg"
      • 但是当我单击该锚点时,它相对于我当前的URL是打开的。
  • 创建一个控制器以通过WebClient传输文件,但这仅适用于特定的文件类型。

总而言之,有没有办法通过浏览器或在客户端计算机上打开MVC中的任何文件?

1 个答案:

答案 0 :(得分:0)

问了一个问题之后,我记得我可以将文件下载到客户端。此时,他们可以根据需要打开它。

我向控制器添加了一个动作,以从网络位置下载它:

// GET: Viewer/File
[HttpGet]
public FileResult Download(string path)
{
   byte[] fileBytes = System.IO.File.ReadAllBytes(path);
   string fileName = Path.GetFileName(path);
   return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}

取自this question.