我正在尝试上传具有阿拉伯名称的文件(مرحبابكم),但是当我将其上传到服务器时,字符串不正确,它会显示这样的字符(ريÙ-Ù)。
那么,我如何上传文件并保留正确的阿拉伯名字?
<form action="up.php" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>
PHP文件:
<?php
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br>";
echo "Type: " . $_FILES["file"]["type"] . "<br>";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
?>
答案 0 :(得分:1)
我会在网页和文件系统中启用unicode(utf8)。
答案 1 :(得分:0)
为什么你不能使用base64编码和解码文件名。
getfile name->
$encoded_fname = base64_encode("arabic_filename")
upload file->move_uploaded_file with encoded filename;
move_uploaded_file($_FILES["file"]["tmp_name"],"path/to/move/" . $encoded_fname);
在下载时解码。
希望这会给你一个想法。
答案 2 :(得分:0)
现在你可以试试我的下面的代码。
HTML文件
<html>
<head></head>
<body>
<form action="up.php" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="FILE" name="file" id="file">
<input type="submit" name="submit" value="Submit">
</form>
</body>
</html>
PHP文件(up.php)
在根目录上上传文件夹。
<?php
if(isset($_POST['submit'])) {
$file = $_FILES['file']['name'];
$encoded_fname = base64_encode($file);
if($file) {
$move = move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" . $encoded_fname);
if($move) {
echo "file uploaded";
}
}
}
?>
结果读取文件(watch.php)
$dir = "upload/";
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if(mb_check_encoding($file)) {
echo "filename: .".base64_decode($file)."<br />";
}
else {
echo $file . "<br>";
}
}
closedir($dh);
}
}
所以你在编码base64中上传文件,然后通过解码得到结果。
希望它会对你有所帮助。
感谢。
答案 3 :(得分:0)
我在我正在工作的网站上遇到了同样的问题,我花了很长时间在这上面,所以只是为了分享知识:) 你不需要编码或更改字符集或任何东西 在提交后通过时间戳重命名文件它对我来说非常像这样
$file = $_FILES['file']['name'][$f]; //the file in arabic
///////////////////////////////////////////////////////////
$arr = explode(".", $file, 2);
echo $first = $arr[0]; // the name without the extension and the dot
///////////////////////////////////////////////////////////
//$data = $name;
$whatIWant = substr($data, strpos($data, ".") + 1);
$file_upload =time().".".$whatIWant; //name of the upload file
`
希望它能帮助任何迷失的灵魂:)
这是一整页