【发布时间】:2016-05-21 20:59:25
【问题描述】:
我有一个用于保存 tmp 文件的经典 php 脚本:
$uploads_dir = "scans";
var_dump( $_FILES );
foreach ($_FILES["pictures"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["pictures"]["tmp_name"][$key];
$name = $_FILES["pictures"]["name"][$key];
rename($tmp_name, urldecode("/var/www/html/$uploads_dir/$name") );
}
}
echo urldecode("/var/www/html/$uploads_dir/$name");
但是,文件“фавикон.png”被保存为“фавикон.png”。请帮我解决编码问题。
谢谢
编辑:
让它与iconv 函数一起工作。然而,由于某种奇怪的原因,它不得不被编码成 windows 格式。
生成的代码:
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["pictures"]["tmp_name"][$key];
$name = $_FILES["pictures"]["name"][$key];
$name =iconv('UTF-8','windows-1251', $name);
copy($tmp_name, "/var/www/html/$uploads_dir/$name");
}
【问题讨论】:
-
您的意思是临时名称的结果与您上传的名称不同吗?这是预期的行为,也是一件好事。最好不要使用用户给您的名称将文件存储在磁盘上,因为它们可能没有好处。将其移出临时目录后,单独询问名称并将其存储在数据库中,并引用该文件。 (假设这就是你的意思)
标签: php linux forms encoding upload