我正在尝试在我的网站上创建一个文件管理系统。问题是下载包含特殊字符的文件(其他工作正常)。
如果我使用file_exists($mypath)
,则结果为true,因此文件存在。
使用unlink($mypath)
删除此文件时,它也可以正常工作。
只有不起作用的是下载文件。
下载是通过href链接完成的,我回显路径,但它以某种方式转换字符,因此链接不起作用。解决方案正在进行一些转换,但我还没有成功。
答案 0 :(得分:0)
我怀疑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将链接代码放入其邮件窗口时,该部分将需要第二个。