繁体   English   中英

如何使用asp.net MVC应用程序从服务器上的网络路径读取

[英]How can I read from a network path on my server using asp.net mvc application

我已经在运行.net MVC应用程序的Web服务器上设置了到另一台用于存储上载文件的服务器的网络路径。 为了允许通过应用程序将文件上传到网络路径,我修改了IIS中的应用程序池,以便该应用程序有权上传到它。 这一切都很好。

为了使应用程序在加载页面时能够读取文件,我在IIS中创建了一个虚拟目录,该目录现在作为IIS中该站点的文件系统的一部分出现。 然后,如何在我的应用程序中访问并为此位置生成路径,以便可以将该路径传递给DB,然后将图像稍后加载到页面上?

假设我的路径是:

虚拟路径为useruploads / image.jpg

如何让我的应用程序识别我创建的虚拟路径?

或者,可以在IIS中删除虚拟目录,是否可以让我的应用程序直接访问Web服务器上的网络路径?

编辑-要添加到上面,我在iis中映射了网络路径,它在iis中显示在我的站点下,如下所示:

在此处输入图片说明

然后,我想使用〜/ useruploads / file.jpg这样的地址从asp.net mvc应用程序内的此目录中读取。 如果我可以让我的应用程序识别该虚拟目录,那么我将能够从中读取该目录。

编辑2号

好的,我认为我已经确定了问题的性质,并且更加清楚了。 基本上,当我在网页上链接到该文件时,我访问的文件就很好。 但是我在Chrome中收到消息“不允许加载本地资源”。 我认为这只是Web浏览器不允许我加载图像的问题,因为页面上使用本地地址(网络路径)引用了该图像。 因此,我现在尝试在应用程序中创建一个操作,以使用指向我的操作的Url.Action加载图像,然后将id转换为图像流,例如

在我看来:

<img src="@Url.Action("image", "files", new { image = Model.image})" alt="name" />

其中Mode.image类似于folder \\ image.jpg。

行动:

public FileResult image(string id)
        {
            var dir = @"\\SERVERNAME\upload\";
            var path = Path.Combine(dir, id);

            return base.File(path, "image/jpg");
        }

所以最后我的问题是我无法将图像放置在页面上,因为它使用的是服务器上的本地地址,出于安全原因,该地址在浏览器中是不允许的。 为了使用网络路径,我不得不使用

<img src="@Url.Action("image", "files", new { image = Model.image})" alt="name" />

我认为此操作:

public FileResult image(string id)
    {
        var dir = @"\\SERVERNAME\upload\";
        var path = Path.Combine(dir, id);
        string contentType = MimeMapping.GetMimeMapping(path);

        return base.File(path, contentType);
    }

然后,这将图像返回到页面,尽管这意味着该图像不会被缓存。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM