获取多个文件上载文件的名称

时间:2011-10-26 12:24:12

标签: php mysql

我一直在尝试将多个文件上传到文件夹中,并将名称保存在数据库表中。这是代码:我需要获取这些上传文件的名称。我知道我的代码是废话:(

有没有办法循环上传这些文件并仍然返回文件名? 我需要这些名称才能将它们插入到mysql表中。

感谢您的协助。

<form action="file-upload.php" method="post" enctype="multipart/form-data">
  Send these files:<br />
  <input name="pic1" type="file" /><br />
  <input name="pic2" type="file" /><br />
  <input name="pic3" type="file" /><br />
  <input name="pic4" type="file" /><br />
  <input type="submit" value="Send files" />
</form>

PHP脚本如下:

<?php

  $target = "uploads/"; 
  $target = $target . basename( $_FILES['pic1']['name']); 
  $target = $target . basename( $_FILES['pic2']['name']); 
  $target = $target . basename( $_FILES['pic3']['name']); 
  $target = $target . basename( $_FILES['pic4']['name']); 

 $pic1 =($_FILES['pic1']['name']); 
 $pic2 =($_FILES['pic2']['name']); 
 $pic3 =($_FILES['pic3']['name']); 
 $pic4 =($_FILES['pic4']['name']); 

$con = mysql_connect("localhost", "root", "");
  if (!$con){
    die('Could not connect: ' . mysql_error());
   }

   mysql_select_db("people", $con);

   $sql="INSERT INTO mtpupload (name, age, pic1, pic2, pic3, pic4 )
   VALUES('$_POST[name]','$_POST[age]','$pic1', '$pic2', '$pic3', '$pic4')";

  //---------Here, I want to insert all the pictures----------//    
    if(move_uploaded_file($_FILES['pic1']['tmp_name'], $target)) { 
       //do nothing
     }
     if(move_uploaded_file($_FILES['pic2']['tmp_name'], $target)) { 
       //do nothingelse{
     }if(move_uploaded_file($_FILES['pic3']['tmp_name'], $target)) { 
       //do nothing  echo "Sorry, the image was not moved from temp folder.";
     }if(move_uploaded_file($_FILES['pic4']['tmp_name'], $target)) { 
       //do nothing   
       echo "The was a problem uploading one of your images.";
     }
    //--------------Ends here---------------------//

    if (!mysql_query($sql,$con)){
    die('Error: ' . mysql_error());
    }
    echo "1 record added";

   mysql_close($con)
   ?> 

更新:结果证明此代码正常运行但只保存了一个图像。我认为我的move_uploaded_file是错误的。有什么指针吗?

再次感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

使用array文件字段名称和foreach时,这可能会有所帮助:

$fields = array('pic1', 'pic2', 'pic3', 'pic4');
$fileNames = array();

foreach($fields as $field)
{
    $file = $_FILES[$field];
    # you can now process each file on it's own.

    $fileNames[$field] = $file['name']; # store all names into an array
    ...
}

答案 1 :(得分:1)

感谢大家的建议,我终于明白了。我在很多地方使用$ target变量。将其重命名为不同的变量有帮助。

答案 2 :(得分:0)

这个怎么样:

foreach ($_FILES as $file) {
    echo $file['name']; // File name of file on user's computer
    echo $file['tmp_name']; // Full path to the file on the server
}