2010-05-17 83 views
8

我正在使用Uploadify使我的用戶可以通過我的web應用程序上傳圖像。Uploadify隨機掛100%

我遇到的問題是,當進度條達到100%時,它每隔一段時間(看起來是隨機的)就會「掛起」而什麼也不做。

我想知道是否有熟悉uploadify的開發人員可能有任何想法如何解決這個問題?我迫切需要一些幫助。

這裏是我的前端代碼:

<javascript> 
jQuery(document).ready(function() { 
jQuery("#uploadify").uploadify({ 
    'uploader'  : 'javascripts/uploadify.swf', 
    'script'   : 'upload-file2.php', 
    'cancelImg'  : 'css/images/cancel.png', 
    'folder'   : 'uploads/personal_images/' + profileOwner, 
    'queueID'  : 'fileQueue', 
    'auto'   : true, 
    'multi'   : true, 
    'fileDesc'  : 'Image files', 
    'fileExt'  : '*.jpg;*.jpeg;*.gif;*.png', 
    'sizeLimit'  : '2097152', 
    'onComplete': function(event, queueID, fileObj, response, data) 
    { 
    processPersonalImage(fileObj.name); 
    arrImgNames.push(fileObj.name); 
    showUploadedImages(true); 
    document.getElementById("photos").style.backgroundImage = "url('css/images/minicam.png')"; 
    }, 
    'onAllComplete' : function() 
    { 
    completionMessage(arrFailedNames); 
    document.getElementById("displayImageButton").style.display = "inline"; 
    document.getElementById("photos").style.backgroundImage = "url('css/images/minicam.png')"; 
    }, 
    'onCancel' : function() 
    { 
    arrImgNames.push(fileObj.name); 
    arrFailedNames.push(fileObj.name); 
    showUploadedImages(false); 
    }, 
    'onError' : function() 
    { 
    arrImgNames.push(fileObj.name); 
    arrFailedNames.push(fileObj.name); 
    showUploadedImages(false); 
    } 
}); 
}); 
</javascript> 

和服務器端:

if (!empty($_FILES)) 
{ 
    //Get user ID from the file path for use later.. 
    $userID = getIdFromFilePath($_REQUEST['folder'], 3); 
    $row = mysql_fetch_assoc(getRecentAlbum($userID, "photo_album_personal")); 
    $subFolderName = $row['pk']; 
    //Prepare target path/file.. 
    $tempFile = $_FILES['Filedata']['tmp_name']; 
    $targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/'.$subFolderName.'/'; 
    $targetFile = str_replace('//','/',$targetPath) . $_FILES['Filedata']['name']; 
    //Move uploaded file from temp directory to new folder 
    move_uploaded_file($tempFile,$targetFile); 
    //Now add a record to DB to reflect this personal image.. 
    if(file_exists($targetFile)) 
    { 
    //add photo record to DB 
    $directFilePath = $_REQUEST['folder'] . '/'.$subFolderName.'/' . $_FILES['Filedata']['name']; 
    addPersonalPhotoRecordToDb($directFilePath, $row['pk']); 
    } 
    echo "1"; 
    die(true); 
} 

感謝您的幫助!

+0

使用堆棧溢出代碼功能使代碼更具可讀性 – Moak 2010-05-17 16:51:46

回答

2

這看起來像一個PHP錯誤。 我會使用提琴手或類似的問題來查看PHP響應或類似的。 檢查你的PHP錯誤日誌,他們可能會擺脫一些光。

+0

Heya, 我真的很感謝你的回覆,所以謝謝你。你說的小提琴手?我沒有聽說過,所以我會谷歌它,讓你知道我是如何得到:) 關於錯誤日誌,我使用廉價主機(Hostgator),我不認爲我有訪問。 – Matty 2010-05-17 17:25:29

+0

基本上,你的代碼永遠不會達到「回聲」1「'。您可以在代碼中沿途回顯斷點,並使用Firebug查看結果。我之前遇到過這種情況,你只需要做一些老派的調試,直到你在你的代碼中發現錯誤。 – jbnunn 2010-05-17 18:52:12

+0

哇,這對Jnunn非常有幫助,我會在早上嘗試第一件事。在螢火蟲中,你看到服務器的迴應?我曾經看到傳出的獲取/發佈請求 – Matty 2010-05-17 20:03:08

2

前段時間我有一個與Uploadify類似的問題(儘管使用ASP.Net MVC) - 但您肯定會發現關於Uploadify事件處理和發佈答案中的行爲的一些有用信息!其可用here

+0

HI Jimbo我真的很感激你的意見。我試着在腳本的頂部放置「echo 1」,這樣腳本就會返回該腳本,無論腳本有多遠,但仍會隨機獲取文件。 我也嘗試過使用firebug來查看php文件返回的內容,但即時響應中沒有看到任何內容。 我的總損失:( – Matty 2010-05-20 11:19:21

+1

你不會看到PHP反應與螢火蟲,因爲請求是由閃存產生的。這就是爲什麼我建議:http://www.fiddler2.com/fiddler2/所以你可以看到實際的PHP響應 – mhughes 2010-05-20 15:44:43

+0

好吧,我讓你現在生病讓你們知道我找到 – Matty 2010-05-20 17:10:04

0

這些都是我會採取的步驟,依次是:

1)100%確定您從Google的服務器200響應。如果不是,這是問題

2)使用最新和最偉大的uplaodify和jQuery

3)檢查JS錯誤(螢火控制檯或瀏覽器JS調試器將工作)

4)升級Flash播放器(是否能解決它,那麼你可以要求更高的版本)

5)將調試語句在uploadify源,特別是在完整​​的處理程序,以確保它被調用

6)如果進度正在到達100%,但處理程序永遠不會被調用,恐怕下一步可能是跳入actionscript並使用調試器或一些跟蹤語句來找出錯誤的位置。這可能意味着有在調用外部接口功能

7)中的錯誤如果你做修復,提交回uploadify

0

以供參考:使用「scriptData」將數據發送到上傳腳本時遇到此問題,並通過在上載腳本中簡單地回顯「ok」而不是發回空文檔來解決此問題。

+0

我發現的問題是,它認爲文件已成功完成。 – Cfreak 2011-02-26 23:49:25

0

對於那些正在使用Mac的用戶,請使用HTTP Scoop查看請求,因爲Firebug沒有顯示它。更多關於this blog的HTTP Scoop。

1

我有同樣的問題。 只需將echo "astlavista babi"添加到您的uploadify腳本中,此echo語句應該是最後一行,如果您有條件語句,則應將echo作爲條件語句中的最後一行。