J'ai construit un uploader pour mon application mais je me bats sur quelque chose.Ajax/iFrame/FileSystemObject Télécharger
Toutes les 3 secondes, mon script AJAX appelle la page ASP, checkProgress.asp, pour vérifier combien de fichiers se trouvent dans ce dossier pendant le téléchargement, il vérifie également si un fichier txt appelé complete.txt s'y trouve. Une fois le décompte terminé, il envoie une réponse au script AJAX avec quelque chose comme "File 2 uploaded ..." et 3 secondes plus tard il envoie "File 3 uploaded ...", et ainsi de suite. Si le fichier complete.txt a été trouvé, il retournera "Complete" au lieu de compter. Cela a bien fonctionné, une fois, et ensuite ne semblait pas fonctionner correctement après cela. Je reçois le message "complet" comme je devrais, mais je n'obtiens pas la réponse de progression du compte de fichiers. J'ai couru la page checkProgress manuellement avec une nouvelle fenêtre de navigateur pour voir pourquoi mon panneau de progression ne se mettait pas à jour avec la progression, et j'ai remarqué que l'icône de chargement du navigateur tournait juste, et quand le téléchargement terminé, . L'appel AJAX n'atteignait donc pas la page pour rassembler le nombre de fichiers car il était occupé, ce qui m'embrouille, car tout ce que fait cette page est de compter le nombre de fichiers dans un dossier. Est-ce que quelqu'un peut suggérer ce que je fais mal? Est-ce que cela ne va tout simplement pas se produire pendant l'ajout de ce dossier?
Voici mon script AJAX. Cela commence lorsque le téléchargement commence:
var upload1ProgressCheckInt = setInterval(function() {
var postData = "token="+token;
$.ajaxSetup ({ cache: false });
$.ajax({ type : 'GET', url : 'ajax/checkProgress.asp',
dataType : 'html', data : postData,
success : function(data) {
if (data == "Failed") {
$('#upload1ProgressStatus').html('Error: Upload cancelled!');
clearInterval(upload1ProgressCheckInt);
// do stuff
} else if (data == "Complete") {
$('#upload1ProgressStatus').html('Success: Files uploaded');
clearInterval(upload1ProgressCheckInt);
// do stuff
} else {
$('#upload1ProgressStatus').html(data);
}
}
}); // end ajax
}, 3000);
et cette page checkProgress.asp:
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
If (FSO.FileExists(Server.MapPath("../files/photos/"&token_&"/complete.txt"))) = True Then
Response.Write "Complete"
Else
Set folder = FSO.GetFolder(Server.MapPath("../files/photos/"&token_&"/"))
Set files = folder.Files
fileCounter = files.Count
Response.Write "File "&fileCounter&" uploaded..."
End If
Cela ressemble à un problème de threading. Est-ce que vous stockez quelque chose dans l'objet Session? Si c'est le cas, essayez de vous débarrasser de ce code et de voir si le thread de travail est toujours bloqué. –
@Ilia G - oui, j'ai des informations de connexion stockées dans les variables de session. Je viens de le remarquer, tout mon site ne fonctionnera pas tant que le téléchargement ne sera pas terminé – TheCarver
En fait, pas tout mon site, juste la partie où je suis connecté par sessions – TheCarver