我正在尝试将文件上传到目录,并在此过程中将其重命名。该文件被上传到目录,但没有文件扩展名,即上传了123456789.
if ( 0 < $_FILES['file']['error'] ) {
echo 'Error: ' . $_FILES['file']['error'] . '<br>';
}
else{
$temp = explode(".",$_FILES["file_to_upload"]["name"]);
$newfilename = sha1(uniqid(mt_rand(), true)) . '.' .end($temp);
move_uploaded_file($_FILES["file_to_upload"]["tmp_name"], "uploads/" .
$newfilename);
}
if (move_uploaded_file($_FILES['file']['tmp_name'], 'files/' .
$newfilename));{
echo "File uploaded successfully!!";
}
我也试过以下无济于事:
if ( 0 < $_FILES['file']['error'] ) {
echo 'Error: ' . $_FILES['file']['error'] . '<br>';
}
else{
$temp = explode(".",$_FILES["file_to_upload"]["name"]);
$extension = pathinfo($temp, PATHINFO_EXTENSION);
$newfilename = sha1(uniqid(mt_rand(), true)) . '.' .$extension;
move_uploaded_file($_FILES["file_to_upload"]["tmp_name"], "uploads/" .
$newfilename);
}
if (move_uploaded_file($_FILES['file']['tmp_name'], 'files/' .
$newfilename));{
echo "File uploaded successfully!!";
}
谁能看到我哪里出错了?其他一切都有效。
答案 0 :(得分:3)
pathinfo()
将一个字符串作为其第一个参数,您将它传递给一个数组。尝试更改:
$extension = pathinfo($temp, PATHINFO_EXTENSION);
到
$extension = pathinfo($_FILES["file_to_upload"]["name"], PATHINFO_EXTENSION);
答案 1 :(得分:0)
你的问题在这里:
$temp = explode(".",$_FILES["file_to_upload"]["name"]);
$extension = pathinfo($temp, PATHINFO_EXTENSION);
$ temp成为一个数组,pathinfo()需要一个字符串。您应该在错误日志中看到这一点。相反,这样做:
$extension = pathinfo($_FILES["file_to_upload"]["name"], PATHINFO_EXTENSION);
答案 2 :(得分:0)
我已将目录分解为代码的一部分中的“上传”和另一部分中的“文件”。与“文件”和“要上传的文件”相同。愚蠢的错误。
我还删除了爆炸并添加了GentlemanMax建议的代码行。
解决方案:
if ( 0 < $_FILES['file']['error'] ) {
echo 'Error: ' . $_FILES['file']['error'] . '<br>';
}
else{
$ext = pathinfo(($_FILES["file"]["name"]), PATHINFO_EXTENSION);
$newfilename = sha1(uniqid(mt_rand(), true)).'.'.$ext;
move_uploaded_file($_FILES["file"]["tmp_name"], "files/" .
$newfilename);
}
if (move_uploaded_file($_FILES['file']['tmp_name'], 'files/' .
$newfilename));{
echo "File uploaded successfully!!";
}