我有一个使用HTML5 multiple属性设置的文件上传表单。
但是,表单仍然只上传单个文件。我是否需要在php中创建某种循环函数,还是有其他方法可以做到这一点?
这是我的代码......
形式:
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data">
<input type="file" multiple="multiple" name="file[]" id="file" />
<input name="submit" type="submit" value="Submit" />
</form>
PHP:
<?php
if(isset($_POST['submit'])) {
foreach($_FILES['newsImage'] as $file){
if ((($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg")))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
}
}
else
{
echo "Invalid file";
}
}
}
?>
答案 0 :(得分:3)
我相信你的领域应该是
<input type="file" multiple="multiple" name="files[]" />
然后在PHP中:
<?php
foreach($_FILES['files'] as $file){
// Handle one of the uploads
}
?>
答案 1 :(得分:3)
for ($i = 0; $i < count($_FILES['newsImage']['name']); $i++) {
// handle upload
}
答案 2 :(得分:2)
我相信这段代码可以达到目的。
它循环遍历$_FILES
数组并创建一个数组,其中包含每个文件的所有属性的 key => value
对。
$temp = array();
foreach ($_FILES['file'] as $key => $value) {
foreach($value as $index => $val){
$temp[$index][$key] = $val;
}
}
答案 3 :(得分:-1)
<?php
include 'db.php';
extract($_POST);
extract($_POST);
if(isset($submit))
{
$count = count($_FILES['image']['name']);
for($i=0;$i<$count;$i++)
{
$fname = $_FILES['image']['name'][$i];
$file_tmp = $_FILES['image']['tmp_name'][$i];
$file_size = $_FILES['image']['size'][$i];
$file_type=$_FILES['image']['type'][$i];
echo $file_size,$file_type;
$target = "img/".$fname;
move_uploaded_file($file_tmp,$target);
echo "uploaded succ !"."<br>";
}
}
?>