2012-07-08 143 views
0

我正在运行PHP脚本来从HTML表单上传文件,重命名它们并将它们放在我的服务器上。它是上传和重命名,但每个文件名现在开头的单词“阵列”
即:ArrayTest Document v1.0.pdf
我相当有信心它不是我的$newfn变量,因为我显示在一个表中,它不显示。ARRAY之前上传后重命名文件名 - PHP

//This gets all the other information from the form 
$name=$_POST['docname']; 
$version=$_POST['docver']; 
$date=$_POST['docdate']; 
$type=$_POST['doctype']; 
$author=$_POST['docauth']; 
$file=$_FILES['uploaded']['name']; 

//target directory is assigned 
$target = $directory; 
$target = $target . basename($file) ; 

//grab file extension 
$filetypes = array(
'image/png' => '.png', 
'image/gif' => '.gif', 
'image/jpeg' => '.jpg', 
'image/bmp' => '.bmp', 
'application/pdf' => '.pdf'); 
$ext = $filetypes[$_FILES['uploaded']['type']]; 

//generate new filename variable "name v??.xxx" 
$newfn = $name . ' ' . 'v' . $version . $ext; 

//Check to see if file exists 
if (file_exists($directory . $file)) 
{ 
echo $_FILES["uploaded"]["name"] . " already exists. "; 
} 
else 
{ 
//if its a new file, change name and upload 
    if (move_uploaded_file($_FILES["uploaded"]["tmp_name"], 
     $directory . $_FILES["uploaded"] . $newfn)) 
     { 
     echo "The file ". basename($file). " has been uploaded"; 
     } 
     else 
     { 
     echo "Sorry, there was a problem uploading your file."; 
     } 
} 

我觉得它与我在move_uploaded_file命令$FILES['uploaded']部分。我尝试了谷歌搜索,但只要我提到“数组”我的谷歌结果是没有什么远程相同的。

好吧,谢谢下面我解决了它。为了在以后任何人,我删除整个$_FILES阵列,使代码读取,

//if its a new file, change name and upload 
if (move_uploaded_file($_FILES["uploaded"]["tmp_name"], 
    $directory . $newfn)) 

现在一切都以正确的名称结构上传。谢谢。

+1

它showas数组,因为$ _FILES [“上传”]是一个数组。 – 2012-07-08 06:33:26

回答

0

应该

move_uploaded_file($_FILES["uploaded"]["tmp_name"],$directory . $_FILES["uploaded"]["name"] . $newfn) 

你忘了,包括[ “名称”]后$ _FILES [ “上传”]

+0

如果我把'[“名称”]放在原文件名的前面新名称 'Original Document.pdf'变成 'Original Document.pdf New Document.pdf' – Hux 2012-07-08 06:56:43

+0

如果你只是想要New Document.pdf ,没有理由包含$ _FILES [“上传”] [“名称”]。只要把它作为$目录。 $ newfn – 2012-07-08 07:11:40

0

在您的move_uploaded_file您使用的是全$_FILE['uploaded']阵列作为名称,而不只是文件名。一个小小的调整:

if (move_uploaded_file($_FILES["uploaded"]["tmp_name"], 
     $directory . $_FILES["uploaded"]["name"] . $newfn)) 
     { 

而且你应该都很好。