【发布时间】:2013-06-11 19:34:29
【问题描述】:
我在重命名现有文件时遇到了一个奇怪的问题:
我的服务器上有一系列需要通过文件选择对话框选择然后重命名的 html 文件。
打开对话框的表单通过 JavaScript 调用并正确打开对话框,允许选择文件并重命名它,直到我遇到一个包含一些(可能)非法字符的文件。此时我得到一个文件未找到错误。
重命名的来源和目的地相同,只是需要更改文件名。
适用于其他文件的我的代码如下(为了清楚起见,对变量进行了重命名):
$dest_path = realpath(dirname(dirname(__FILE__))) . $miDestination ;
$targefile = $dest_path . basename( $_FILES["thesrcfile"]["name"]);
$newName = $dest_path . $anewname . ".html";
rename($targefile,$newName);
如前所述,这可以正常工作,直到我到达一个名称如下的文件:
These are "very" strangely-named file's!.html
从这里我得到一个找不到文件的错误。所有权限都是正确的,并且此代码已与更明智的命名文件一起正常工作。顺便说一句,我无法控制文件的名称,它们可以包含任何字符。
任何人都可以提出一种方法来获得重命名功能以将这些文件识别为存在并相应地重命名它们吗?
非常感谢
最大
【问题讨论】:
-
生成随机名称,永远不要接受原始名称。
-
查看this。
-
@zerkms:原始文件通过另一个进程复制到它们的位置 - 我无法控制名称,直到它们到达所需的文件夹,此时我想重命名它们。
-
@CORRUPT:该代码究竟如何帮助我重命名文件?
-
@MaxVK 您可以尝试使用它将文件名转换为文件系统兼容的名称。例如,您可以在
$newName = $dest_path . $anewname . ".html";之前将其应用于$anewname。
标签: php