2017-08-01 54 views
0

我使用文件上傳進度條創建了一個表單。我正在使用ajaxForm來設置前/後操作。一旦上傳過程結束,我想要生成一個新的網頁並通過調用「sendEmail.php」發送電子郵件。問題是我可以看到進度文件達到100%,但之後沒有任何反應。這是停留在100% 我有2個問題:ajaxForm - 即使php上傳文件不存在,「uploadProgress」也會顯示進度

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

如果您沒有爲表單設置動作,則默認爲當前網頁。無論該頁面是否可以處理該文件,都會上傳該文件,這就是您基於文件大小看到進度的原因。 '$ _FILES'的'print_r()'結果是什麼?要看到它,你可能需要'file_put_contents'數據(記得將print_r()的第二個參數設置爲'true',否則數據將不會保存到文件。 – JBH

+0

謝謝, i'm這是新的 - 你可能會更具體,也許是一個簡短的例子? –

回答

0

這不是一個答案這麼多,因爲它是一個擴展的評論...

我們需要知道,如果上傳的文件實際上是到達。因此,請將此設置爲upload.php文件的第一行。

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

我假設你的web服務器對執行upload.php的目錄有寫權限。如果沒有,你需要給它可以寫入的目錄提供一個路徑。通常,可以寫入DOCUMENT_ROOT上方的目錄。

如果上傳完全失敗(未收到文件),您將看到一個空數組。如果成功,你會看到上傳的文件名和一堆其他信息。如果成功,問題只是正確處理文件的一個問題。

相關問題