多个上传字段PHP


Multiple upload fields PHP

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

谢谢

如果你将它们作为数组循环,它的工作原理是一样的:

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[]" />

你想要多少就可以有多少

会的。$_FILES将是PHP中上传文件的数组

当然可以。只要看看$_FILES超全局数组。您上传的所有文件及其元数据都将存储在那里。

根据W3C的HTML5草案,你应该添加多重属性:

<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]);
    }
}
?>

据我所知,如果你想从一个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]);
  }
?>