ajaxForm - " uploadProgress"即使php上传文件不存在,也会显示进度

时间:2017-08-01 19:36:04

标签: php ajax file upload

我创建了一个带有文件上传进度条的表单。我正在使用ajaxForm来设置前/后动作。上传过程结束后,我想通过调用“sendEmail.php”生成新的网页并发送电子邮件。问题是我可以看到进度文件达到100%,但之后没有任何反应。它被困在100% 我有两个问题:

  1. 当我测试这个时,我注意到了这个动作 - " UPLOAD.php"失踪但我看到一个进度条,其行为与文件大小成比例。 这是为什么?什么是上传文件?
  2. 当我添加UPLOAD.php时,它仍然无效。
  3. 我的表单创建行如下所示:

    <form id="formmail" class="form-horizontal col-xs-6 col-sm-6 col-md-4 col-sm-offset-1" name="formmail" method="POST" action="**UPLOAD.php**" enctype="multipart/form-data">
    

    我的脚本生成进度条:

    var progress
    
    $(document).ready(function() {  
        $("#submit").click(function(){
            $("#formmail").ajaxForm({
                type: "POST",
                url: "sendEmail.php",
                beforeSend: function() {
                    $("#progressBar").removeClass("hidden");
                    progress = "0%";
                    $('.progress-bar').css("width", progress);
                    $('.progress-bar').html(progress);
                },
                uploadProgress: function (event, position, total, percentComplete) {
                    progress = percentComplete + "%";
                    $('.progress-bar').css("width", progress);
                    $('.progress-bar').html(progress);  
                },
                success: function (data){
                    alert("It's OK!");
                },
            }).submit();
        });
    });
    

    PHP上传文件,在这种情况下只上传。我会在文件工作后移动文件。

    <?php
        if(isset($_POST) && !empty($_FILES['fileatt']['name'])){
        $tmp = $_FILES['fileatt']['tmp_name'];
        echo "echo something";
    ?>
    

1 个答案:

答案 0 :(得分:0)

这不是一个答案,而是一个扩展的评论...

我们需要知道上传的文件是否实际到达。因此,将其设为upload.php文件的第一行。

file_put_contents('upload_test.txt', print_r($_FILES,true));

我假设您的Web服务器对执行upload.php的目录具有写权限。如果没有,您需要提供一个可以写入的目录的路径。通常,DOCUMENT_ROOT上面的目录可以写入。

如果上传完全失败(没有收到文件),您将看到一个空数组。如果成功,您将看到上传的文件名和一堆其他信息。如果它成功了,问题只是正确处理文件。