我正在实现一个系统,用户可以上载几乎任何文件类型的任意数量的文档以链接到“工作项”。本质上,用户可以生成一个任务,称为工作项,并将任意数量的文件附加到该任务。我已经实现了用于处理工作项本身,上载文件,管理文件(编辑和删除)的组件,但是在查看文件时遇到了问题。
当用户上传文件时,该文件将保存在网络文件夹中。所有用户都具有对该目录中所有文件的读取权限。文件的路径保存在数据库中,我可以通过实体框架访问该数据库。
我当前的问题是我找不到打开这些文件的通用方法。我已经实现了将文件流式传输到浏览器的控制器,但这仅适用于某些文件类型。
具体来说,我已经尝试过:
创建超链接并将文件路径放在href标记中,但这会尝试打开相对于应用程序在Web服务器上位置的文件路径。基本上,它将文件路径附加到当前URL。
示例:
href="@Path.Combine(item.PATH, item.NAME)"
输出:
href="\\server\myapp\item\3\test.jpg"
创建一个控制器以通过WebClient传输文件,但这仅适用于特定的文件类型。
总而言之,有没有办法通过浏览器或在客户端计算机上打开MVC中的任何文件?
答案 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);
}