多个上传字段PHP

时间:2011-12-05 17:12:56

标签: php file-upload

我的问题是,如何以及<input type='file' name='file[]'> theese的多个人在php工作?

由于

5 个答案:

答案 0 :(得分:4)

如果你将它们作为一个数组循环遍历,那么它的工作方式是相同的:

foreach($_FILES['file'] AS $key=>$file) {
    $filename = $file['tmp_name'];
    $size = $file['size'];
    $newfile = $_SERVER['DOCUMENT_ROOT'] . "/uploads/" . date("Ymd_his") . "_" . $filename;
    move_uploaded_file($filename, $newfile);
}

它会循环遍历每个上传和处理。 只要确保你们之间有一些变化(我添加了一个时间戳) - 否则你只会得到一个文件。

输入正确

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

您可以拥有任意数量的

答案 1 :(得分:1)

是的,他们会工作的。 $_FILES将是PHP中上传文件的数组。

答案 2 :(得分:1)

是的,这当然会奏效。只需看看$_FILES超全局数组。您上传的所有文件及其元数据都将存储在那里。

答案 3 :(得分:0)

据我所知,如果你想从html表单上传多个文件,你需要有多个文件输入框。

<input type='file' name='file1'>
<input type='file' name='file2'>
<input type='file' name='file3'>

除非你有某种类型的java,javascript,flex或类似的多文件上传框架为你做的工作。

上传后,PHP脚本将如下所示:

<?
  foreach($_FILES as $file){
    move_uploaded_file($file[tmp_name],$target.$file[name]);
  }
?>

答案 4 :(得分:0)

根据W3C's HTML5 draft,您应该添加多个属性:

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

某些浏览器(如Internet Explorer(甚至9))不支持多个属性,但其他主要属性也支持。

然后,您可以通过循环进入$ _FILES超全局来获取所有文件:

<?php

foreach ($_FILES['file']['error'] as $k => $error) {
    if (!$error) {
        move_uploaded_file($_FILES['file']['tmp_name'][$k], $your_dir.'/'.$_FILES['file']['name'][$k]);
    }
}
?>