在子文件夹中加载图像在服务器上不起作用

Loading images in subfolders is not working on the server

我正在从事一个使用英语和阿拉伯语两种语言的项目。阿拉伯语版本在子文件夹 (Ar) 中。

visual studio 本地主机中的两个版本一切正常。但是当我将网站部署到真实服务器时。我注意到阿拉伯语版本中的图像将获得与英文版本相同的路径(因此不会显示图像)。

我通过此代码上传子文件夹中的图片:

string fileExt = System.IO.Path.GetExtension(fileBgUpload.FileName);
string filename;
string guid = Guid.NewGuid().ToString();
try
{
    if (fileExt != "")
    {
        if (fileExt == ".jpg" || fileExt == ".jpeg" || fileExt == ".JPG" || fileExt == ".JPEG")
        {
            if (fileBgUpload.HasFile)
            {
                filename = Path.GetFileName(fileBgUpload.FileName);
                fileBgUpload.SaveAs(Server.MapPath("/img/Gallery/") +  filename + guid + ".jpg");
                imgBackground.ImageUrl = ("/img/Gallery/") + filename + guid + ".jpg";
            }
        }
    }
}

所以在数据库中图像 url 将是

/img/Gallery/Imagename.jpg

在visual studio,当我运行网站一切正常。图片Url是:

localhost:1020/Ar/img/Gallery/Imagename.jpg  

服务器(主机)上的相同内容,为图像提供以下 URL:

www.mydomain.com/img/Gallery/Imagename.jpg

这是我的问题,图片获取主文件夹路径后无法显示。

有什么想法吗?谁能告诉我我在做什么是正确的?为什么在 visual studio 这种情况下一切正常。

部署网站时,服务器使用 IIS,文件夹 (Ar) 很可能已更改为虚拟目录。

在 Visual Studio 中,您应该做的第一件事是将 Visual studio 本地服务器更改为 IIS Express。然后,为(Ar)文件夹创建一个虚拟目录,看看是否得到相同的结果。

创建虚拟目录请阅读here

您应该在代码中修改的最后一件事是将“/Ar/”添加到字符串路径,甚至在将其保存到数据库之前。

例如

imgPathForDb="/Ar/"+ your string path

"/Ar/img/Gallery/" + filename + guid + ".jpg";

大多数开发人员更喜欢 IIS 而不是 Visual studio 本地服务器。这就是为什么我强烈建议您在未来的项目中使用 IIS Express。