2010-05-17 82 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作为条件语句中的最后一行。