La référence Adobe indique spécifiquement cela comme une limitation.Téléchargement d'un fichier Adobe AIR/Flex sur un serveur nécessitant une authentification de base
Voici la note dans la fonctionnalité file.upload dans adobe reference. Remarque: Si votre serveur requiert une authentification utilisateur, seuls les fichiers SWF s'exécutant dans un navigateur, à l'aide du plug-in de navigateur ou du contrôle ActiveX, peuvent fournir une boîte de dialogue pour inviter l'utilisateur à saisir un nom d'utilisateur et un mot de passe. , et seulement pour les téléchargements. Pour les téléchargements utilisant le plug-in ou le contrôle ActiveX, ou pour les téléchargements et téléchargements à l'aide du lecteur autonome ou externe, le transfert de fichier échoue.
click here for the full reference page for File
Quelqu'un at-il été en mesure de contourner cette limitation. Une idée que j'ai eu était d'utiliser le support natif dans AIR pour Javascript et de voir ça fonctionne. Quelqu'un a essayé ça? Quelqu'un a d'autres idées?
J'ai également essayé la solution proposée here et cela n'a pas fonctionné. Selon l'interlocuteur du forum, cela ne semblait pas fonctionner pour lui non plus. Probablement frapper le problème/limitation mentionné ci-dessus.
Je comprends comment inclure l'authentification de base sur un URLRequest et cela fonctionne bien pour moi si je poste des paires clé/valeur. Mais quand je tente de télécharger un fichier, cela ne fonctionne pas. Il se trouve juste là et ne déclenche aucun des événements file.upload. Pas d'erreurs pas de progrès. Toute aide est très appréciée.
Voici mon exemple de code:
var sendVars:URLVariables = new URLVariables();
sendVars.prop1 = "filename" ;
var urlRequest:URLRequest = new URLRequest();
urlRequest.method = URLRequestMethod.POST ;
urlRequest.data = sendVars ;
var encoder:Base64Encoder = new Base64Encoder();
encoder.encode("user:pass");
var credsHeader:URLRequestHeader = new URLRequestHeader("Authorization", "Basic " + encoder.toString());
urlRequest.requestHeaders.push(credsHeader);
file = new File(url);
file.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA , file_UploadCompleteDataHandler);
file.addEventListener(Event.OPEN, fileOpenHandler);
file.addEventListener(ProgressEvent.PROGRESS, fileProgressHandler);
file.addEventListener(Event.COMPLETE, file_CompleteHandler);
file.addEventListener(IOErrorEvent.IO_ERROR, file_IOErrorHandler);
file.addEventListener(HTTPStatusEvent.HTTP_STATUS , file_HTTPStatusHandler);
file.addEventListener(SecurityErrorEvent.SECURITY_ERROR, file_SecurityErrorHandler);
try {
// Start the file upload
file.upload(urlRequest, "primaryFile", false);
}
catch (error:Error) {
trace("Unable to upload file." + file.name);
}
Voulez-vous dire que je devrais faire exactement ce que je fais avec le URLRequest mais au lieu d'utiliser file.upload je devrais faire ceci: – Saviz
Désolé le dernier commentaire a été coupé avant que j'aie fini avec lui: Voulez-vous dire que je devrais faire exactement ce que je fais avec le URLRequest mais au lieu d'utiliser file.upload je devrais utiliser URLRequest et remplir son .data comme vous le suggérez ré. Comment puis-je l'envoyer si ce n'est via le fichier file.upload. Quel chargeur dois-je utiliser? – Saviz