PHP move_uploaded_file动态文件名 - 文件没有扩展名

时间:2014-06-13 02:08:24

标签: php file upload

我想将一些GPX(XML技术上)文件上传到服务器,并使用动态文件名(例如0.gpx,1.gpx ...)重命名它们。我无法弄清楚如何使用move_uploaded_file函数执行此操作,因为它只创建无扩展名的文件。我得到了一个名字'文件而不是&name; name.gpx'文件。

不应该自动使用uploadef文件的PATHINFO_EXTENSION来创建具有正确扩展名的文件吗?

我试图像这样调用函数:

$filename = 0;
move_uploaded_file($_FILES['uploadfiles']['tmp_name'][$f], $filename);
$filename++;

即使我尝试使用扩展名创建字符串,它也不起作用:

$tmp = 0;
$ext = pathinfo($name, PATHINFO_EXTENSION);
$filename = $tmp + "." + $ext;
move_uploaded_file($_FILES['uploadfiles']['tmp_name'][$f], $filename);
$tmp++;

请帮忙吗?

2 个答案:

答案 0 :(得分:0)

我不认为临时文件有扩展名。

您可以手动将“gpx”添加到名称中:

$tmp = 0;
$filename = $tmp . ".gpx";
move_uploaded_file($_FILES['uploadfiles']['tmp_name'][$f], $filename);
$tmp++;

或者也许检查mimetype并制作出适当的扩展名。

或者使用$_FILES['uploadfiled']['name']中的扩展名,在白名单中将其匹配,然后将其附加到您的最终文件名。

答案 1 :(得分:0)

文件名应具有扩展名。这对我来说很好找到扩展名:

$temp = explode(".", $_FILES["uploadfiles"]["name"]);
$extension = end($temp);

echo $extension; // Display the extension

$tmp = 0;
$filename = $tmp.".".$extension;
move_uploaded_file($_FILES['uploadfiles']['tmp_name'][$f], $filename);
$tmp++;

希望这有帮助。