PHP未重命名上载的文件
我正在上载一个图像,然后尝试按如下方式重命名该图像:PHP未重命名上载的文件,php,Php,我正在上载一个图像,然后尝试按如下方式重命名该图像: $target_dir = "../uploads/"; $target_dir = $target_dir . basename( $_FILES["eventimage"]["name"]); $uploadOk=1; if (move_uploaded_file($_FILES["eventimage"]["tmp_name"], $target_dir)) { echo "The file ". basename( $_
$target_dir = "../uploads/";
$target_dir = $target_dir . basename( $_FILES["eventimage"]["name"]);
$uploadOk=1;
if (move_uploaded_file($_FILES["eventimage"]["tmp_name"], $target_dir)) {
echo "The file ". basename( $_FILES["eventimage"]["name"]). " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
//Now rename
$new_name_here = 'file_' . rand(0, 10000) . '.' . end(explode(".", $_FILES["eventimage"]["name"]));
move_uploaded_file($_FILES["eventimage"]["tmp_name"], "../uploads/" . $new_name_here);
问题是图像现在正在重命名
我在错误的地方做这件事
我如何才能让它工作?您的代码中有两个对的调用,但每个上载的文件只能使用一次
使用move\u uploaded\u file()
将临时/上传的文件设置为“permenant”后,您将需要开始使用
但是,我建议在通过move\u uploaded\u file()
移动原始文件时,不要使用原始文件的名称,因为恶意用户很容易在其中伪造一些令人讨厌的东西。相反,尝试使用第二步使用的随机性来替换第一步:
$target_dir = "../uploads/";
$target_file = $target_dir . 'file_' . rand(0, 10000) . '.' . end(explode(".", $_FILES["eventimage"]["name"]));
if (move_uploaded_file($_FILES["eventimage"]["tmp_name"], $target_file)) {
echo "The file ". htmlentities(basename( $_FILES["eventimage"]["name"])) . " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
旁注:在输出用户提供的文件名时,我还抛出了对的调用;没有它,您将面临跨站点脚本(XSS)漏洞