在子文件夹中加载图像在服务器上不起作用
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。
我正在从事一个使用英语和阿拉伯语两种语言的项目。阿拉伯语版本在子文件夹 (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。