我的问题是,如何以及<input type='file' name='file[]'>
theese的多个人在php工作?
由于
答案 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]);
}
}
?>