我正在尝试在我的网站上创建一个文件管理系统。下载包含特殊字符的文件时出现问题(其他工作正常)。如果我使用file_exists($mypath),则结果为真,因此文件存在。
当用unlink($mypath)删除这个文件时,它也工作得很好。唯一不起作用的就是下载文件。下载是通过href链接完成的,在那里我回显了路径,但它以某种方式转换了字符,因此链接无法工作。解决方案是在一些转换中,但我还没有成功。
发布于 2015-12-12 20:52:18
我怀疑php正在将特殊字符转换为html实体。
您应该使用'rawurlencode‘php方法来保留特殊字符。
下面的链接讨论了你的问题(特殊字符出现在文件名中并想要创建一个链接):
http://www.dxsdata.com/2015/03/html-php-mailto-content-link-with-special-characters/
他们的解决方案展示了rawurlencode的使用,以下代码是从上面的链接复制的,以防链接死掉:
截图开始...
场景
在您的网站上,您希望提供一个链接,该链接可以打开一个邮件客户端,如带有邮件和内容建议的Outlook。内容包含指向文件的链接,该文件的名称中包含特殊字符,这会导致Outlook断开该链接,例如,如果该文件包含空格或德语Umlaute。
解决方案
使用PHP编写
<?php
$fullPath = $yourAbsoluteHttpPath . "/" . rawurlencode(rawurlencode($filename));
$mailto = "mailto:a@b.com?subject=File for you&body=Your file: ".$fullPath;
?>
<a href="<?=$mailto?>">Generate Mail</a>注意“rawurlencode”函数的双重用法。第一个是HTML输出所需要的,第二个是Outlook将链接代码放入其邮件窗口时所需要的。
剪接结束;-)
https://stackoverflow.com/questions/34239824
复制相似问题