首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用HTTP POST,通过HTML和PHP选择并上传多个文件?

如何使用HTTP POST,通过HTML和PHP选择并上传多个文件?
EN

Stack Overflow用户
提问于 2009-07-24 01:13:35
回答 9查看 358K关注 0票数 169

我有使用<input type="file">上传单个文件的经验。然而,我在一次上传多个文件时遇到了问题。

例如,我想选择一系列图像,然后将它们一次性上传到服务器。

如果可能的话,最好使用单个文件输入控件。

有谁知道如何做到这一点吗?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2012-01-11 03:00:25

这在HTML5中是可能的。示例(PHP 5.4):

代码语言:javascript
复制
<!doctype html>
<html>
    <head>
        <title>Test</title>
    </head>
    <body>
        <form method="post" enctype="multipart/form-data">
            <input type="file" name="my_file[]" multiple>
            <input type="submit" value="Upload">
        </form>
        <?php
            if (isset($_FILES['my_file'])) {
                $myFile = $_FILES['my_file'];
                $fileCount = count($myFile["name"]);

                for ($i = 0; $i < $fileCount; $i++) {
                    ?>
                        <p>File #<?= $i+1 ?>:</p>
                        <p>
                            Name: <?= $myFile["name"][$i] ?><br>
                            Temporary file: <?= $myFile["tmp_name"][$i] ?><br>
                            Type: <?= $myFile["type"][$i] ?><br>
                            Size: <?= $myFile["size"][$i] ?><br>
                            Error: <?= $myFile["error"][$i] ?><br>
                        </p>
                    <?php
                }
            }
        ?>
    </body>
</html>

以下是在文件对话框中选择两个项目后在Chrome中的外观:

这是点击"Upload“按钮后的样子。

这只是一个完整的答案的草图。有关在PHP Manual: Handling file uploads中正确、安全地处理文件上传的更多信息,请参见PHP。

票数 211
EN

Stack Overflow用户

发布于 2012-04-16 02:29:57

你需要做一些事情来创建一个多文件上传,实际上这是非常基本的。你不需要使用Java,Ajax,Flash。只需构建一个标准的文件上传表单,开头为:

代码语言:javascript
复制
<form enctype="multipart/form-data" action="post_upload.php" method="POST">

那就是成功的关键;

<input type="file" name="file[]" multiple />

别忘了那些括号!在post_upload.php中,尝试执行以下操作:

代码语言:javascript
复制
<?php print_r($_FILES['file']['tmp_name']); ?>

请注意,您得到了一个包含编号数据的数组,这意味着您可以使用带有文件‘tmp_name’的第三对括号来访问每个文件。

代码语言:javascript
复制
$_FILES['file']['tmp_name'][0]

您可以使用php count()来计算所选文件的数量。祝你好运!

票数 97
EN

Stack Overflow用户

发布于 2012-01-19 04:06:28

Firefox 5中的完整解决方案:

代码语言:javascript
复制
<html>
<head>
</head>
<body>
 <form name="uploader" id="uploader" action="multifile.php" method="POST" enctype="multipart/form-data" >
  <input id="infile" name="infile[]" type="file" onBlur="submit();" multiple="true" ></input> 
 </form>

<?php
echo "No. files uploaded : ".count($_FILES['infile']['name'])."<br>"; 


$uploadDir = "images/";
for ($i = 0; $i < count($_FILES['infile']['name']); $i++) {

 echo "File names : ".$_FILES['infile']['name'][$i]."<br>";
 $ext = substr(strrchr($_FILES['infile']['name'][$i], "."), 1); 

 // generate a random new file name to avoid name conflict
 $fPath = md5(rand() * time()) . ".$ext";

 echo "File paths : ".$_FILES['infile']['tmp_name'][$i]."<br>";
 $result = move_uploaded_file($_FILES['infile']['tmp_name'][$i], $uploadDir . $fPath);

 if (strlen($ext) > 0){
  echo "Uploaded ". $fPath ." succefully. <br>";
 }
}
echo "Upload complete.<br>";
?>

</body>
</html>
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1175347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档