在上载文件php时添加文件扩展名

在上载文件php时添加文件扩展名,php,Php,我试图上传一个文件到一个目录,并在此过程中重命名它。文件上载到目录,但没有文件扩展名,即123456789。已上载 if ( 0 < $_FILES['file']['error'] ) { echo 'Error: ' . $_FILES['file']['error'] . '<br>'; } else{ $temp = explode(".",$_FILES["file_to_upload"]["name"]); $newfilename = sha1(uniqid(

我试图上传一个文件到一个目录,并在此过程中重命名它。文件上载到目录,但没有文件扩展名,即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!!";
}
有人能看出我哪里做错了吗?其他一切都可以

pathinfo将字符串作为其第一个参数,您将向其传递一个数组。尝试更改:

$extension = pathinfo($temp, PATHINFO_EXTENSION);

你的问题是:

$temp = explode(".",$_FILES["file_to_upload"]["name"]);
$extension = pathinfo($temp, PATHINFO_EXTENSION);
$temp将成为一个数组,pathinfo需要一个字符串。您应该在错误日志中看到这一点。相反,请执行以下操作:

$extension = pathinfo($_FILES["file_to_upload"]["name"], PATHINFO_EXTENSION);

我在代码的一部分将目录标记为上载,在另一部分将文件标记为上载。文件和要上载的文件相同。愚蠢的错误

我还删除了explode并添加了Gentleman Max建议的代码行

解决方案:

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!!";
}

可能重复正常、精细的计划。竖起大拇指。去或者你有什么问题吗?不要先爆发。错误报告全部;ini_设置“显示错误”,“1”;我不知道你的意思。我问了一个问题。不幸的是,这对我不起作用。我仍然得到一个没有扩展名的文件。我真的不认为是这样,但这可能与按钮上的以下代码有关:函数uploadFile{if$file_to_upload.val!={var file_data=$'file_to_upload'.prop'files'[0];var form_data=new FormData;form_data.append'file',file_data;然后ajax调用。。。。
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!!";
}