如何在php中上传多个文件?

时间:2014-03-31 13:31:36

标签: php

我在html中有这段代码

<input type="file" name="file" id="file1"/><br />
<input type="file" name="file" id="file2"/><br />

这是我的PHP代码

if(!empty($_FILES['image']['name'])) {
            $ext=explode('.',$_FILES['image']['name']);
            $new_name=$property_id."_".rand(10,10000).".".end($ext);
            $name=SITEPATH.S_LOCATIONS_LARGE.$new_name;
            $small=SITEPATH.S_LOCATIONS.$new_name;
            move_uploaded_file($_FILES['image']['tmp_name'],$name);
            if(is_file($name)) {
                $this->db->update("insert into bloom_location_images (image,property_id) values ('$new_name',$property_id)");
                list($width, $height, $type, $attr) = getimagesize($name);
                if($width > 600) {
                    $this->magic->constrain_by_scale($name,500,0);
                }
                copy($name,$small);
                if($width > 301) {
                    $this->magic->constrain_by_scale($small,301,0);
                }
            }
        }

        return $property_id

现在我想存储这两个文件,但我不能。我想我必须通过数组元素传递它。如果是,请告诉我怎么可能

    please help me to do this

3 个答案:

答案 0 :(得分:3)

试试这个:

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

当然可以根据需要添加<input>

<强> PHP

您的文件将在$_FILES数组中提供。所以你可以简单地做这样的事情:

for($i=0; $i<count($_FILES['upload']['name']); $i++) {
    $tmp = $_FILES['upload']['tmp_name'][$i];

    $path = "yourfolder/" . $_FILES['upload']['name'][$i];

    if(move_uploaded_file($tmp, $path)) {
         // your code here
    }
}

希望这会有所帮助

答案 1 :(得分:1)

更改name属性而不是id,它会起作用。

或meaby您可以使用类似的东西(仅限HTML5): How can I select and upload multiple files with HTML and PHP, using HTTP POST?

答案 2 :(得分:0)

用户数组尝试表单文件元素中的名称

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

您将在$_FILES中以数组

的形式上传数据