2

我怎样才能让我的代码获取图像“_filename.JPG”而不仅仅是“_filename.jpg”?

string picUrl = "http://MyServer/" + _filename + ".jpg";            
Image webImage = global::MyProject.Properties.Resources.ImageNotFound1;
try
{
    WebRequest requestPic = WebRequest.Create(picUrl);
    WebResponse responsePic = requestPic.GetResponse();
    webImage = Image.FromStream(responsePic.GetResponseStream());                
}
4

2 回答 2

2

服务器强制区分大小写 - 您的客户端代码不能影响服务器的行为。HTTP 服务器要求路径的精确大小写是不寻常的,但对于基于 Unix/Linux 的服务器来说很容易获得行为,并在Uri RFC中以这种方式进行了描述。

如果服务器区分大小写,您的选项:

  • 询问文件的确切名称(可能服务器提供了一种获取确切文件名的方法。即通过解析一些 HTML 页面)
  • 事先知道名称的大小写(即在服务器上仅使用小写名称)。
  • 为名称中的每个字符生成一些/所有大小写组合(即尝试已知大小写,如 .jpg/.JPG),但这可能需要很长时间。
  • 重新配置服务器以非大小写方式接受文件名
  • 查看服务器是否支持某种提示来进行不区分大小写的文件检索(不太可能,但是......)
于 2013-03-11T01:52:35.630 回答
1

就像 Alexei Levenkov 的建议之一,我通过启用模块“mod_speling”使我的 Apache 服务器不区分大小写

这是链接 http://www.leccionespracticas.com/informatica-sistemas-y-servidores/apache-case-sensitive-to-case-insensitive-and-alias-solved/

Apache 在 *nix 系统上区分大小写,因为底层文件系统区分大小写。这可能会给从不区分大小写的系统带来的站点带来麻烦。使用 apache 模块 check_speling(有趣的名字,嗯?)可以相对容易地消除这种敏感性。它还会在可能的情况下重新映射错误输入的 url,将 index.htm 映射到正确的 index.html 等。

这是 Ubuntu/Debian 系统的程序。

  1. 在命令行中,键入 sudo su 以获取 root 权限。
  2. 纳米 /etc/apache2/mods-available/speling.conf
  3. 键入 CheckSpelling on 并按 ctrl-x, y 退出并保存文件。
  4. 输入 a2enmod 然后拼写并按回车键。
  5. 键入 /etc/init.d/apache2 reload 以重新加载 apache。
  6. 输入错误的 url 来测试它。
于 2013-03-11T02:45:26.130 回答