【问题标题】:How do you dynamically path to a remote server folder in C#?如何在 C# 中动态路径到远程服务器文件夹?
【发布时间】:2013-06-07 18:10:38
【问题描述】:

好吧,经过大量的谷歌搜索和尝试不同的事情,这可能是我搞砸的简单事情。

基本上,我正在做的是从 url 解析 productID 并将 XL.jpg 添加到末尾。例如,假设产品 ID 为 1234,程序将在 PathToFolder (C://LiveSite/img/XL/) 中提供的文件夹中搜索 1234XL.jpg。

一切都按计划进行,直到路径部分。它解析 url 将 XL.jpg 添加到末尾,甚至遵循我设置的路径,但我得到一个错误,“地址不理解。Firefox 不知道如何打开这个地址,因为协议 (c ) 不与任何程序相关联。”其他浏览器只有一个空白窗口。

这是在我的浏览器中显示的内容:c://LiveSite/img/XL/1234XL.jpg

protected void OpenImg_Click(object sender, EventArgs e)
                {
                    int i = 0;

                    string PathToFolder = "C://LiveSite/img/XL/";

                    var dirInfo = new DirectoryInfo(PathToFolder);
                    string FileName = Variables.param + "XL.jpg";
                    var foundFiles = dirInfo.GetFiles(FileName);

                    if (foundFiles.Length == 1)
                    {
                        ClientScript.RegisterStartupScript(this.GetType(), "openFoundImage", "window.open('" + PathToFolder + foundFiles[i].Name + "');", true);
                    }
                }
            }
       }

我在搞砸它不会通往服务器的路径是什么?我应该使用什么来代替 C:// 吗?我试过用另一种方式翻转斜线并使用 C:/ none 工作。

提前感谢您的帮助。

编辑:

很抱歉造成混乱。这些图像不在我的计算机上或项目中。他们在远程服务器上,如果重要的话,是 sql server。如果我想链接到服务器,我不确定是否正确启动了目录。

在服务器上,我想将它链接到 C://LiveSite/img/XL/ 中文件夹的路径,我现在明白,只有在我在该服务器上执行此操作时,才能像这样链接它。那么如何从 Internet 浏览器链接到该文件夹​​?我可以使用我写的那段代码,还是必须以全新的方式来做?

这是一个 asp.net 网络应用程序

【问题讨论】:

  • 您还没有说明您的应用程序类型。这是 asp.net 网络应用程序吗?如果这是您的图像所在的网络应用程序?在您的网站根目录或子文件夹中?还是其他虚拟目录?
  • 是的,它是一个 asp.net 网络应用程序。我的图像位于公司服务器上。不,图像不在项目中。
  • 您不能访问公司现场的图片吗?喜欢www.yourcompany.com/img/XL/1234XL.jpg?
  • 您可能会这么认为,但该公司使用多个站点名称并且有数千种产品,所以我会花很长时间才能做到这一点。这就是它动态完成的原因。当客户选择产品时,它必须解析特定的产品 ID,然后在服务器上的同名文件夹中找到图像。
  • 如果您在服务器文件夹中搜索文件,将会耗费更多时间和资源。您不能使用产品 ID 和匹配的图像路径/网址创建表并根据要求从那里获取吗?如果您的网站快速变化,您可以每天或每小时更新此表格。

标签: c# directory getfiles registerstartupscript


【解决方案1】:

如果C://LiveSite/ 是您的网站根目录,那么您可以使用它

protected void OpenImg_Click(object sender, EventArgs e)
{
    int i = 0;

    string PathToFolder = "C://LiveSite/img/XL/";

    string webRootPathToFolder = ResolveUrl("~/img/XL/");
    var dirInfo = new DirectoryInfo(PathToFolder);
    string FileName = Variables.param + "XL.jpg";
    var foundFiles = dirInfo.GetFiles(FileName);

    if (foundFiles.Length == 1)
    {
        ClientScript.RegisterStartupScript(this.GetType(), "openFoundImage", "window.open('" + webRootPathToFolder + foundFiles[i].Name + "');", true);
    }
}

【讨论】:

    【解决方案2】:

    试试this

    file:///c:/path/to/the%20file.txt
    

    如果必须...在浏览器中打开本地文件并不是一种广泛使用的技术。

    可以这么说,它只能在您的计算机上运行。如果浏览器与网站不在同一台机器上运行,则此逻辑将无法工作。

    您应该考虑一种解决方案,其中服务器将文件的内容以字节[] 的形式发送到浏览器。 There is an example of that here.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-26
      • 2019-12-28
      • 2017-04-29
      • 1970-01-01
      • 2011-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多