2

我的浏览器显示带有文件名的 URL

http://www.example.com/pdf/204177_20090604_Chloorhexidine_DCB_oogdruppels_0%2C1%25.pdf

实际文件名是204160_20090604_Atropine_DCB_oogdruppels_0,5%.pdf

在 urldecode 之后,它给出了错误的文件名 http://www.example.com/pdf/204177_20090604_Chloorhexidine_DCB_oogdruppels_0,1%.pdf

更新

最初我认为它的 URL 解码问题,但是204153_20090605_Aluminiumacetotartraat_DCB_oordruppels_1,2%.pdf在浏览器中呈现时像名称这样的文件会抛出错误的请求。我正在使用 Kohana 3 框架。跟服务器有关系吗?

4

3 回答 3

4
$url = 'http://204160_20090604_Atropine_DCB_oogdruppels_0,5%.pdf';
$encode = urlencode($url);
$decode = urldecode($encode);

echo $url."<br />";
echo $encode."<br />";
echo $decode."<br />";

// outputs
http://204160_20090604_Atropine_DCB_oogdruppels_0,5%.pdf
http%3A%2F%2F204160_20090604_Atropine_DCB_oogdruppels_0%2C5%25.pdf
http://204160_20090604_Atropine_DCB_oogdruppels_0,5%.pdf

一切都好。你的错误在其他地方。

于 2010-10-21T12:59:18.390 回答
2

您正在查看两个不同的文件。

无法将 urlencode204160_20090604_Atropine_DCB_oogdruppels_转换为204177_20090604_Chloorhexidine_DCB_oogdruppels_,编码不会更改字母字符。

错误最有可能出现在创建文件列表并输出链接的代码中;链接标题和文件名之间的映射似乎搞砸了。

于 2010-10-21T13:03:11.303 回答
0

这将使用 c# 为您提供确切的文件名 m

Server.UrlDecode("http://www.example.com/pdf/204160_20090604_Atropine_DCB_oogdruppels_0,5%25.pdf")

,(逗号)被编码为 %2c %(百分比)被浏览器编码为 %25

如果你使用Request.Url它会解码 ,(comma) 但不是 %(percent)

所以 Server.UrlDecode("xyz") 解码除 %(percent) 之外的所有字符,也就是说上面的文件名中有 "%25"

于 2010-10-21T13:07:57.393 回答