如何在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" />
当然可以添加任意数量的<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
希望对你有帮助
【讨论】:
但我想在我的问题中使用不同的输入控件,例如 正如我所说,添加任意数量的输入...<input name="upload[]" type="file" multiple="multiple" /><br /> <input name="upload[]" type="file" multiple="multiple" /> <br />
等等...
再次我想知道要上传的文件扩展名,所以我怎么能找到它我试过这个代码 $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@ 所以他们会以数组的形式来到后端,或者只是给他们不同的名字,比如field1
field2
。我希望现在一切都清楚了。
再次我想知道要上传的文件扩展名,所以我怎么能找到它我试过这个代码 $ext=explode('.',$_FILES['file']['tmp_name' ][$i]);以上是关于如何在php中上传多个文件?的主要内容,如果未能解决你的问题,请参考以下文章