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

Posted

技术标签:

【中文标题】如何在php中上传多个文件?【英文标题】:how to upload multiple files in php? 【发布时间】:2014-05-10 20:53:33 【问题描述】:

我在 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

【问题讨论】:

How to handle multiple file upload using PHP 的可能重复项 【参考方案1】:

试试这个:

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

当然可以添加任意数量的&lt;input&gt;

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
    

希望对你有帮助

【讨论】:

但我想在我的问题中使用不同的输入控件,例如 正如我所说,添加任意数量的输入...&lt;input name="upload[]" type="file" multiple="multiple" /&gt;&lt;br /&gt; &lt;input name="upload[]" type="file" multiple="multiple" /&gt; &lt;br /&gt; 等等... 再次我想知道要上传的文件扩展名,所以我怎么能找到它我试过这个代码 $ext=explode('.',$_FILES['file']['tmp_name' ][$i]);【参考方案2】:

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

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

【讨论】:

但我想在我的问题中使用不同的输入控件,例如 再次我想知道要上传的文件扩展名,所以我怎么能找到它我试过这个代码 $ext=explode('.',$_FILES['file']['tmp_name' ][$i]);【参考方案3】:

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

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

您将在$_FILES 中以数组的形式上传数据

【讨论】:

但我想在我的问题中使用不同的输入控件,例如 Meaby 我没有以正确的方式描述它,当然可以编辑该字段的 id 但您不能将它们都保留为名称 file 您必须例如将其更改为 @ 987654325@ 所以他们会以数组的形式来到后端,或者只是给他们不同的名字,比如field1field2。我希望现在一切都清楚了。 再次我想知道要上传的文件扩展名,所以我怎么能找到它我试过这个代码 $ext=explode('.',$_FILES['file']['tmp_name' ][$i]);

以上是关于如何在php中上传多个文件?的主要内容,如果未能解决你的问题,请参考以下文章

使用PHP脚本如何上传多个文件

使用php上传ajax多个文件

php如何实现一次性上传多个文件

如何使用 HTTP POST 使用 HTML 和 PHP 选择和上传多个文件?

php中上传多张图片,如何解决?

使用 PHP 上传多个文件 [重复]