【问题标题】:Multile upload to folders多次上传到文件夹
【发布时间】:2015-10-07 00:02:57
【问题描述】:

我正在尝试通过根据序列号创建文件夹并将文件保存在其中来上传多个文件。我的代码如下:

用于多次上传的 HTML 代码:

 <div class="form-inline clearfix">
            <label class="col-md-5">Select A File To Upload:</label>
                <div class="col-md-4">
                    <input type="file" name="myfile[]" id="Uploaded_file" multiple="multiple"/> 
                </div>
 </div><br/>

用于多次上传的 PHP 代码

if (count($_FILES["myfile"]) > 0)
{
    for ($i = 0; $i < count($_FILES["myfile"]["name"]); $i++) 
    {
        foreach ($_FILES["myfile"]["error"][$i] as $key => $error) {
            if ($error == UPLOAD_ERR_OK) {

                $structure = "Uploads/SystemConfiguration/$formno"; //FormNo is the serial number queried from the database
                if (!mkdir($structure, 0777, true))
                {
                    die('Failed to create folders...');
                }
                $tmp_name = $_FILES["myfile"]["tmp_name"][$i][$key];
                $name = $_FILES["myfile"]["name"][$i][$key];
                $target = $target .'/' .$_FILES['myfile']['name'][$i] ; 
                $filepath=$_FILES['myfile']['name'][$i] ;
                if(move_uploaded_file($tmp_name,"$structure/$name")) 
                { 
                    echo "<center>The file ". basename( $_FILES['myfile']['name'][$i]). " has been uploaded.</center>"; 
                } 
                else 
                { 
                    echo "No File was uploaded"; 
                } 
            }
        }
    }
}

即使我上传了多个文件,但只有最后一个文件保存在目录中。如何修改我的代码以便上传多个文件? 感谢任何帮助:)

【问题讨论】:

    标签: php file-upload directory


    【解决方案1】:

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

    <!doctype html>
    <html>
        <head>
            <title>Test</title>
        </head>
        <body>
            <form method="post" enctype="multipart/form-data">
                <input type="text" name="Filename">
                <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"]);
                    $Filename=$_POST['Filename'];
                    $structure = "Uploads/SystemConfiguration/$Filename";
                    if (!mkdir($structure, 0777, true))
                    {
                     die('Failed to create folders...');
                    }
    
                    for ($i = 0; $i < $fileCount; $i++) {
                    $name = $_FILES["my_file"]["name"][$i];
                    $tmp_name=$_FILES["my_file"]["tmp_name"][$i];
                    move_uploaded_file($tmp_name,"$structure/$name");
                        ?>
                            <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>
    

    这是在文件对话框中选择 2 个项目后在 Chrome 中的外观:

    这是点击“上传”按钮后的样子。

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

    【讨论】:

    • 嘿!感谢您的回复。我想知道如何将多个文件上传到创建的目录中。目前,只有一个文件正在上传。
    • 只需在上面的代码中添加 move_uploaded_file($myFile["tmp_name"][$i], ","$structure/$name"); 。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多