【问题标题】:how to submit a form after a file has been uploaded while including some data in the post[]如何在上传文件后提交表单,同时在帖子中包含一些数据[]
【发布时间】:2017-10-18 05:45:12
【问题描述】:

嗨,我有以下 html 表单,我正在使用它来上传 .xlx 文件。

<form action="dashboard.php" method="post" enctype="multipart/form-data">
                            <div class="file-upload">  


                                <div class="col-md-12 m-b-15">
                                    <div class="col-md-3">
                                        Note No :
                                    </div>
                                    <div class="col-md-8">
                                        <input class=" form-control m-b-15 " id="note_number_for_the_alert" name="note_number_for_the_alert" readonly="">                              
                                    </div>
                                </div> 
                                <div class="row">
                                    <div class="col-md-8 m-l-10">

                                        <div class=" formError validateAlert" id="alert_to_upload_file_in_vendor_delivery_note_management" >
                                            <div class="formErrorContent" id="test">please Select the .XLSX file <br></div>
                                            <div class="formErrorArrow"></div>                                
                                        </div>
                                        <input type="file" id="file" name="file2" multiple="multiple" />
                                        <p style="text-align: right; margin-top: 20px;">
                                            <input type="submit"  value="Upload Files" name="submit2" class= "btn btn-success" />
                                        </p>
                                    </div>
                                    <div class="col-md-4"></div>
                                </div>


                            </div>
                        </form>

按照用于上传文件的 phpexcel 代码行。

$uploadedStatus = 0;
$name2 = '';
if (isset($_POST["submit2"])) {
    if (isset($_FILES["file2"])) {

        if ($_FILES["file2"]["error"] > 0) {
            echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
        } else {
            if (file_exists($_FILES["file2"]["name"])) {
                unlink($_FILES["file2"]["name"]);
                $uploadedStatus = 2;
            }
            $name = basename($_FILES['file2']['name']);
            $name2 = explode('.', $name);
            if ($name2[count($name2) - 1] == 'csv' || $name2[count($name2) - 1] == 'xlsx') {

                $target_path = "uploads/programming/";
                $target_location = $target_path . basename($_FILES['file2']['name']);

                move_uploaded_file($_FILES["file2"]["tmp_name"], $target_location);
                $uploadedStatus = 1;
}


        }
    } else {
        echo "No file selected <br />";
    }
    }
}

这两个单独工作完美,文件上传没有问题。 但我需要同时向dashboard.php 发送一些值。

目前在文件上传页面之前重定向到dashboard.php,任何提交表单的建议一旦获得$uploadedStatus = 1,在文件上传过程完成之后。

【问题讨论】:

  • 您是使用纯PHP 还是使用JavaScriptAJAX 来发送和接收数据? class=" form control m-b-15 id=" 有一个错字,这是复制粘贴还是您输入的?这也是这个问题的完整代码库吗?
  • 使用JS onclick事件推送消息。
  • @Sand 我正在使用纯 php 在文件上传后将数据从一个页面提交到另一个页面。请检查修改,我只使用了问题的代码。
  • @RamuBhusal 感谢您可以给我发送示例链接或代码示例
  • 我认为 Rinto 的回答会有所帮助还是您需要更多解释?

标签: php html forms file-upload phpexcel


【解决方案1】:

要回答您的问题,您可以使用 JQuery 上传文件。所以页面不会重新加载。当您按下上传按钮时,会显示加载图像,告诉用户您正在上传。

<form action="dashboard.php" method="post" enctype="multipart/form-data" id="form_id">

JQuery & Ajax

function submitForm() {
  var formData = new FormData($("#form_id"));
  // show your loader image

    $.ajax({
        url: upload.php,
        type: 'POST',
        data: formData,
        async: false,
        success: function (data) {
            alert(data)
           // hide your loader image
        },
        cache: false,
        contentType: false,
        processData: false
    });
}

注意:Formdata 不适用于旧版浏览器。有一些后备,请阅读此thread

【讨论】:

  • 我同意你的看法,Rinto,很好的建议,但要澄清我如何使用 $target_path = "uploads/programming/";而 jquery upload.i 的意思是如何将文件添加/上传到特定文件夹。
  • ajax的作用,就是调用PHP页面upload.php。 Ajax 不上传任何东西,它是你的 php 脚本。所以你可以调整你的 PHP 文件来改变你想要的目录。请记住这一点,您使用的是 Ajax 而不是 Browser POST,其余的是 PHP
猜你喜欢
  • 2011-05-15
  • 2016-08-12
  • 1970-01-01
  • 2022-01-19
  • 2019-04-03
  • 1970-01-01
  • 2017-04-09
  • 2012-12-01
  • 1970-01-01
相关资源
最近更新 更多