在子文件夹中加载图像不适用于服务器

时间:2016-07-07 23:48:53

标签: c# asp.net visual-studio-2012 subdirectory loading-image

我正在开展一个用英语和阿拉伯语两种语言的项目。阿拉伯语版本位于子文件夹(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";
            }
        }
    }
}

所以在数据库中,图片网址为

/img/Gallery/Imagename.jpg

在visual studio中,当我运行网站时,一切正常。图片网址为:

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

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

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

这是我的问题,图像不会显示,因为它获取主文件夹的路径。

有什么想法吗?谁能告诉我我在做什么是对的?为什么在视觉工作室中,在这种情况下一切正常。

1 个答案:

答案 0 :(得分:1)

部署网站时,服务器使用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。