使用 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[] 用于&lt;input&gt; 名称属性

 <input type=”file” id=”file” name=”files[]” multiple=”multiple” accept=”image/*” />

我们还需要给文件输入类型文件名,如files[],并需要添加一个名为multiple的属性。这里accept是一个可选属性,用于允许用户只上传图片文件。

【讨论】:

以上是关于使用 PHP 上传多个文件 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 php 中的每个循环上传 zip 档案会导致 codeigniter 中 zip 文件中的 zip 档案重复

上传文件PHP时生成唯一文件名的最佳方法[重复]

如何使用jsp和servlet将多个图像上传到文件夹[重复]

PHP Ajax文件上传不起作用[重复]

php文件上传不要替换旧的[重复]

在PHP中获取上传文件扩展名的最佳方法/实践是啥[重复]