【问题标题】:ajaxForm - "uploadProgress" shows progress even though php to upload file does not existajaxForm - “uploadProgress” 显示进度,即使上传文件的 php 不存在
【发布时间】:2017-08-01 19:36:03
【问题描述】:

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

  1. 当我对此进行测试时,我注意到缺少“UPLOAD.php”操作,但我看到了一个与文件大小成正比的进度条。 这是为什么?上传文件是什么?
  2. 当我添加 UPLOAD.php 时,它仍然无法正常工作。

我的表单创建行如下所示:

<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";
?>

【问题讨论】:

  • 当您不为表单设置操作时,它默认为当前网页。无论该页面是否可以处理文件都会上传,这就是您根据文件大小看到进度的原因。 $_FILESprint_r() 结果是什么?要查看它,您可能需要file_put_contents 数据(记得将print_r() 的第二个参数设置为true,否则数据将不会保存到文件中。
  • 谢谢你,我是新手 - 请你说得更具体一些,也许是一个简短的例子?

标签: php ajax file upload


【解决方案1】:

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

我们需要知道上传的文件是否真的到达了。因此,将此作为您的 upload.php 文件的第一行。

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

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

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

【讨论】:

    猜你喜欢
    • 2013-10-05
    • 2012-06-24
    • 1970-01-01
    • 2011-03-10
    • 2018-01-19
    • 2021-11-14
    • 1970-01-01
    • 2023-03-04
    • 2020-08-15
    相关资源
    最近更新 更多