上传文件php时添加文件扩展名

时间:2017-04-19 20:08:41

标签: php

我正在尝试将文件上传到目录,并在此过程中将其重命名。该文件被上传到目录,但没有文件扩展名,即上传了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!!";
}

谁能看到我哪里出错了?其他一切都有效。

3 个答案:

答案 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!!";
}
相关问题