PHP中的move_uploaded_file函数

5

我有一个问题,我正在使用 move_uploaded_file() 函数上传文件,其中一些文件名是用阿拉伯语命名的,所以我搜索了这个问题,但仍然没有答案。我尝试使用 meta 标签和 Base64 编码等方法,但仍然不起作用。

请问有什么解决办法?

<?php
    $data_name=$_POST['name'];
    $name=base64_encode($_FILES['file']['name']);
    $location="../Files/".$course_name."/";
    $tmp_name=$_FILES['file']['tmp_name'];
    if(move_uploaded_file($tmp_name, $location.$name))
        echo"OK";
?>

2
在你的PHP标签开头后面添加错误报告,例如 <?php error_reporting(E_ALL); ini_set('display_errors', 1); 然后再写下你的代码,看看是否有任何错误信息。 - Funk Forty Niner
上传的文件是否需要保持原来的文件名,还是可以重命名? - Professor Abronsius
没有问题,但为什么我们不能上传阿拉伯语文件名? - Montaser Qasem
它是否显示任何错误?我认为不会,名字不会造成任何错误,一个解决办法可能是使用语言库将名字转换为英语。 - Imran Qamer
它没有显示任何错误,但是文件保存为类似于: ط¯ظ„ظٹظ„ ط§ظ„ظ…ظˆط§ط¯ ط§ظ„ط§ط®طھظٹط§ط±ظٹط© ظ…ط­ظ…ظٹ。 - Montaser Qasem
显示剩余3条评论
1个回答

2
一种解决方案可以是:
创建一个数据库,在其中保存文件的阿拉伯语名称,并为该文件分配一个带有当前时间的自定义唯一名称,同时将自定义名称保存到数据库中,在检索时更改文件名称并向用户显示。
或者使用一些名称转换库,将文本从阿拉伯语转换为英语或反之。为此,请参考以下参考资料: 如何动态将英语转换为阿拉伯语 将波斯/阿拉伯数字转换为英文数字 或者使用PHP将字符串转换为UTF-8: PHP:将任何字符串转换为UTF-8,而不知道原始字符集,或至少尝试

http://php.net/manual/en/function.utf8-encode.php


你的意思是在 PHP 中无法处理带有阿拉伯字符的文件名吗? - Álvaro González
只有当服务器支持阿拉伯文本时才可能。 - Imran Qamer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接