文件名中的特殊字符 - 下载与删除

时间:2015-12-12 12:27:47

标签: php html download character

我正在尝试在我的网站上创建一个文件管理系统。问题是下载包含特殊字符的文件(其他工作正常)。 如果我使用file_exists($mypath),则结果为true,因此文件存在。

使用unlink($mypath)删除此文件时,它也可以正常工作。 只有不起作用的是下载文件。 下载是通过href链接完成的,我回显路径,但它以某种方式转换字符,因此链接不起作用。解决方案正在进行一些转换,但我还没有成功。

1 个答案:

答案 0 :(得分:0)

我怀疑php正在将特殊字符转换为html实体。

你应该使用' rawurlencode' php方法保留特殊字符。

以下链接讨论了您的问题(出现在文件名中并希望创建链接的特殊字符):

http://www.dxsdata.com/2015/03/html-php-mailto-content-link-with-special-characters/

他们的解决方案显示了rawurlencode的使用,以下是从上面的链接复制的,只是因为链接已经死了:

Snip start ...

方案

在您的网站上,您希望提供一个链接,用于打开包含邮件和内容建议的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将链接代码放入其邮件窗口时,该部分将需要第二个。

剪断结束; - )