我的问题是,<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]);
}
?>