使用 PHP 上传多个文件 [重复]
Posted
技术标签:
【中文标题】使用 PHP 上传多个文件 [重复]【英文标题】:Multiple File Upload with PHP [duplicate] 【发布时间】:2017-02-28 23:24:47 【问题描述】:我想上传多个文件上传。它几乎和简单一样 文件上传,但我们需要使用 html 标记和 php代码。需要在 html 标记上添加多个属性。 Firefox、Chrome、Safari 和 IE 9+ 等主流网络浏览器都支持此功能 属性。我将向您展示如何使用 PHP 上传多个文件 和基本的 HTML 表单,但缺少它(多个文件不是 上传)
我试过下面的代码
HTML 代码
<html>
<head>
<?php
if (isset($message))
foreach ($message as $msg)
printf(“<p class=’status’>%s</p></ br>\n”, $msg);
# success message
if($count !=0)
printf(“<p class=’status’>%d files added successfully!</p>\n”, $count);
?>
<title>Multiple File upload with PHP</title>
</head>
<body>
<form action=”” method=”post” enctype=”multipart/form-data”>
<input type=”file” id=”file” name=”files” multiple=”multiple” accept=”image/*” />
<input type=”submit” value=”Upload!” />
</form>
</body>
</html>
PHP 脚本
<?php
$valid_formats = array(“jpg”, “png”, “gif”, “zip”, “bmp”);
$max_file_size = 1024*5000; //100 kb
$path = “uploads/”; // Upload directory
$count = 0;
if(isset($_POST) and $_SERVER[‘REQUEST_METHOD’] == “POST”)
// Loop $_FILES to exeicute all files
foreach ($_FILES[‘files’][‘name’] as $f => $name)
if ($_FILES[‘files’][‘error’][$f] == 4)
continue; // Skip file if any error found
if ($_FILES[‘files’][‘error’][$f] == 0)
if ($_FILES[‘files’][‘size’][$f] > $max_file_size)
$message[] = “$name is too large!.”;
continue; // Skip large files
elseif( ! in_array(pathinfo($name, PATHINFO_EXTENSION), $valid_formats) )
$message[] = “$name is not a valid format”;
continue; // Skip invalid file formats
else // No error found! Move uploaded files
if(move_uploaded_file($_FILES[“files”][“tmp_name”][$f], $path.$name))
$count++; // Number of successfully uploaded file
?>
【问题讨论】:
到底是什么问题? 【参考方案1】:将输入文件名替换为files[]
而不是files
请参见以下表单示例:
<form action="" method="post" enctype="multipart/form-data">
<input type="file" id="file" name="files[]" multiple="multiple" accept="image/*" />
<input type="submit" value="Upload!" />
</form>
【讨论】:
谢谢@sameer 现在它正在工作。【参考方案2】:将files[]
用于<input>
名称属性
<input type=”file” id=”file” name=”files[]” multiple=”multiple” accept=”image/*” />
我们还需要给文件输入类型文件名,如files[]
,并需要添加一个名为multiple
的属性。这里accept
是一个可选属性,用于允许用户只上传图片文件。
【讨论】:
以上是关于使用 PHP 上传多个文件 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用 php 中的每个循环上传 zip 档案会导致 codeigniter 中 zip 文件中的 zip 档案重复