2010-05-17 14 views
8

Sto usando Uploadify per consentire ai miei utenti di caricare immagini tramite la mia applicazione web.Uploadify Appeso a caso al 100%

Il problema che sto avendo è che di tanto in tanto (in quello che sembra essere casuale) quando la barra di avanzamento raggiunge il 100% si "blocca" e non fa nulla.

Mi chiedevo se qualche sviluppatore che abbia familiarità con uploadify possa avere qualche idea su come risolvere questo problema? Ho un disperato bisogno di aiuto.

Ecco il mio codice front-end:

<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> 

e server side:

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); 
} 

Grazie per qualsiasi aiuto !!

+0

utilizzare la funzione di codice overflow dello stack per rendere il codice più leggibile – Moak

risposta

2

questo sembra un errore php. Vorrei usare Fiddler o un problema simile per visualizzare la risposta php o simile. Controlla i log degli errori php, potrebbero far luce.

+0

Heya, Ho davvero apprezzato la vostra risposta così grazie. Il violinista dici? Non ne ho mai sentito parlare quindi andrò su Google e ti farò sapere come faccio :) Per quanto riguarda i log degli errori, sto usando hosting economico (Hostgator) e non penso di avere accesso. – Matty

+0

Fondamentalmente, il tuo codice non raggiunge mai "echo" 1 "". Puoi echo fuori punti di interruzione lungo la strada nel tuo codice, e usa Firebug per vedere i risultati. Mi sono imbattuto in questo prima e devi solo eseguire il debug della vecchia scuola finché non trovi l'errore nel tuo codice. – jbnunn

+0

Wow, è davvero d'aiuto Jnunn, proverò a fare quella prima cosa al mattino. Dove in firebug vedi le risposte del server? Sono abituato a guardare in uscita ottenere/inviare richiesta – Matty

2

Ho avuto un problema simile qualche tempo fa con Uploadify (usando però ASP.Net MVC), ma troverai sicuramente alcune informazioni utili sulla gestione e il comportamento degli eventi di Uploadify nella risposta pubblicata! La sua disposizione here

+0

HI Jimbo apprezzo molto il tuo contributo. Ho provato a mettere "echo 1" nella parte superiore dello script in modo che fosse restituito dallo script indipendentemente da quanto in basso fosse ottenuto lo script, ma ottenendo comunque file sospesi a caso. Ive ha anche provato a usare firebug per vedere cosa restituisce il file php, ma non vedo nulla nella risposta. Im in perdita totale :( – Matty

+1

non si è in grado di vedere la risposta php con firebug, perché la richiesta è generata da flash. Ecco perché ho suggerito: http://www.fiddler2.com/fiddler2/ in modo da potrebbe vedere la risposta effettiva php – mhughes

+0

Ok ho ora, malato farvi sapere che cosa trovo – Matty

0

Questi sono i passi vorrei prendere, in ordine:

1) Essere sicuro al 100% che si stanno ottenendo una risposta 200 dal server. In caso contrario, questo è il problema

2) Utilizzare l'ultima e la più grande uplaodify e jQuery

3) Verificare la presenza di JS errori (console Firebug o il browser JS debugger lavoreranno)

4) Aggiorna il tuo Flash Player (se questo risolve poi è possibile richiedere una versione successiva)

5) Mettere istruzioni di debug nel codice uploadify, in particolare nel gestore completa per essere sicuri che viene chiamato

6) Se il progresso sta raggiungendo 100% ma il gestore non viene mai chiamato, temo che il passo successivo potrebbe essere quello di immergersi nell'actioncript e utilizzare il debugger o alcune istruzioni trace per capire dove si trova l'errore. Questo può significare che c'è un bug nel chiamare la funzione di interfaccia esterna

7) Se si effettua correzioni, torna a presentare uploadify

0

Per riferimento futuro: ho riscontrato questo problema durante l'invio di dati allo script di caricamento utilizzando "scriptData" e risolto semplicemente facendo "ok" nello script di caricamento anziché restituire un documento vuoto.

+0

Il problema con quello che ho trovato è che poi pensa che il file sia stato completato con successo. – Cfreak

0

Per coloro che utilizzano i Mac, utilizzare HTTP Scoop per visualizzare la richiesta poiché Firebug non lo mostra. Altro su HTTP Scoop da this blog.

1

Ho avuto lo stesso problema. Basta aggiungere echo "astlavista babi" allo script uploadify, questa istruzione echo dovrebbe essere l'ultima riga, se si dispone di un'istruzione condizionale allora echo deve essere posizionato come ultima riga all'interno dell'istruzione condizionale.