2017-04-19 81 views
-1

我正尝试上传文件到目录,并在过程中重命名它。该文件被上传到该目录,但没有文件扩展名,即123456789.被上传。上传文件时添加文件扩展名php

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

的可能的复制[?如何提取的PHP文件扩展名(http://stackoverflow.com/questions/173868/how-to-extract-a-file-extension -in-php) – Script47

+1

好的,很好的计划。竖起大拇指。走。 _(或者你在这里有什么问题吗?)_ – arkascha

+0

不要'先爆炸()'。 – GentlemanMax

回答

0

我decalred目录作为另一个代码的一部分“上传”和“文件”。与“文件”和“要上传的文件”一样。愚蠢的错误。

我也删除了爆炸,并添加了由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!!"; 
} 
3

pathinfo()接受一个字符串作为它的第一个参数,你传递给它一个数组。尝试改变:

$extension = pathinfo($temp, PATHINFO_EXTENSION); 

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

不幸的是,这并没有为我工作。我仍然得到一个没有扩展名的文件。我真的不认为它是这种情况,但它可能是按下按钮上的以下代码: – spbrad

+0

function uploadFile(){(“(#”file_to_upload“)。val()!=”“) {file_data = $('#file_to_upload')。prop('files')[0]; var form_data = new FormData(); form_data.append('file',file_data); 然后ajax调用.... – spbrad

0

你的问题是在这里:

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

$临时成为一个数组和PATHINFO()需要一个字符串。你应该在你的错误日志中看到这个。相反,这样做:

$extension = pathinfo($_FILES["file_to_upload"]["name"], PATHINFO_EXTENSION); 
相关问题