PHP获取多个上传文件的名称

时间:2013-04-17 20:38:42

标签: php arrays string forms file-upload

您好我试图创建一个脚本来上传多个文件。 到目前为止,所有文件都在上传。

我现在的问题是我需要抓取上传文件的每个文件名,这样我就可以将它们插入到数据库中。

这是我的HTML:

<form action="" method="post" enctype="multipart/form-data">

  <input type="file" name="image[]" multiple />
  <input type="submit" value="upload" />

这是php:

if (!empty($_FILES['image'])) { 
    $files = $_FILES['image'];

    for($x = 0; $x < count($files['name']); $x++) {
        $name       = $files['name'][$x];
        $tmp_name   = $files['tmp_name'][$x]; 
        $size       = $files['size'][$x]; 

        if (move_uploaded_file($tmp_name, "../folder/" .$name)) {
            echo $name, ' <progress id="bar" value="100" max="100"> </progress> done <br />';
        }
    }
}

真的希望有人可以帮我这个。 / JL

3 个答案:

答案 0 :(得分:4)

你的索引倒退了。 $_FILES是一个数组,每个上传的文件都有一个元素。这些元素中的每一个都是一个关联数组,其中包含该文件的信息。因此count($files['name'])应为count($files)$files['name'][$x]应为$files[$x]['name'](对于其他属性也类似。您还可以使用foreach循环:

foreach ($_FILES as $file) {
  $name       = basename($file['name']);
  $tmp_name   = $file['tmp_name'];
  $size       = $file['size'];

  if (move_uploaded_file($tmp_name, "../folder/" .$name)) {
      echo $name, ' <progress id="bar" value="100" max="100"> </progress> done <br />';
  }
}

答案 1 :(得分:1)

我认为glob()功能可以提供帮助:

<?php
    foreach(glob("*.jpg") as $picture)
    {
        echo $picture.'<br />';
    }
?>

演示结果:

pic1.jpg
pic2.jpg
pic3.jpg
pic4.jpg
...

请务必在必要时更改文件路径和扩展名。

答案 2 :(得分:1)

感谢您的帮助,我通过简单地创建变量来实现它:

$image_1 = (print_r($files['name'][0], true)); 
$image_2 = (print_r($files['name'][1], true)); 
$image_3 = (print_r($files['name'][2], true));