1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
|
upload (méthode FileReference.upload)
public upload(url:String) : Boolean
Procède au chargement d'un fichier sélectionné par un utilisateur sur un serveur distant. Flash Player peut télécharger des fichiers jusqu'à 100 Mo. Il est nécessaire d'appeler FileReference.browse() ou FileReferenceList.browse() avant d'appeler cette méthode.
Les écouteurs reçoivent des événements permettant d'indiquer la progression du chargement, s'il a réussi ou échoué. Bien que vous puissiez utiliser l'objet FileReferenceList permettant aux utilisateurs un choix multiple de fichiers à charger, vous devez charger les fichiers un par un. Pour cela, faites une itération dans le tableau FileReferenceList.fileList des objets FileReference.
Le fichier est chargé vers l'URL passée dans le paramètre url. L'URL doit être un script serveur configuré pour accepter les téléchargements montants. Flash Player télécharge les fichiers en utilisant la méthode HTTP POST. Le script serveur qui gère le chargement doit attendre une requête POST comportant les éléments suivants :
Un élément Content-Type de multipart/form-data
Un élément Content-Disposition avec l'attribut name défini sur "Filedata" et un attribut filename défini sur le nom du fichier d'origine.
Le contenu binaire actuel du fichier
Voici un exemple de requête POST :
Content-Type: multipart/form-data; boundary=AaB03x
--AaB03x
Content-Disposition: form-data; name="Filedata"; filename="example.jpg"
Content-Type: application/octet-stream
... contents of example.jpg ...
--AaB03x--
Vous pouvez envoyer des données au serveur avec l'appel upload() en ajoutant les paramètres de l'URL.
Remarque : Si votre serveur requiert une authentification d'utilisateur, seuls les fichiers SWF s'exécutant dans un navigateur, (c'est-à-dire utilisant le plug-in du navigateur ou le contrôle ActiveX), peuvent fournir une boîte de dialogue pour demander à l'utilisateur un nom et un mot de passe d'authentification, ceci uniquement pour les téléchargements. Concernant les chargements effectués via le plug-in ou le contrôle ActiveX et le chargement/téléchargement via les lecteurs autonomes ou externes, le transfert de fichiers échoue.
Pour utiliser cette méthode, tenez compte du modèle de sécurité de Flash Player :
Interdit si le fichier SWF appelant est dans une Sandbox locale non sûre.
Par défaut, l'accès est refusé entre Sandboxes. Un site web peut autoriser l'accès à une ressource en ajoutant un fichier de régulation inter-domaines.
Pour plus d'informations, consultez les sections suivantes :
Chapitre 17, "Compréhension de la sécurité" dans Apprentissage d' ActionScript 2.0 dans Flash
Le livre blanc sur la sécurité dans Flash Player 8
Le livre blanc sur la sécurité dans Flash Player 8 en liaison avec les API
Disponibilité : ActionScript 1.0 ; Flash Player 8
Paramètres
url:String - URL du script serveur configuré pour gérer le chargement par appels HTTP POST. L'URL peut être de type HTTP ou de type HTTPS pour les chargements sécurisés.
Vous pouvez envoyer des données au serveur avec l'appel upload() en ajoutant les paramètres de l'URL ; par ex.http://www.myserver.com/upload.cgi?userID=jdoe.
Sur certains navigateurs, les chaînes d'URL ont une longueur limitée. Une longueur supérieure à 256 caractères peut échouer sur certains navigateurs ou serveurs.
Valeur renvoyée
Boolean : une valeur false dans l'un des cas suivants :
FileReference.browse() n'a pas été appelé avec succès sur cet objet, ou FileReferenceList.browse() n'a pas été appelé avec succès avec cet objet dans son tableau filelist.
Le protocole utilisé n'est pas le protocole HTTP ou HTTPS.
Une violation de sécurité se produit, c'est-à-dire : si votre fichier SWF essaye d'accéder à un fichier sur un serveur hors de la Sandbox de sécurité de votre fichier SWF.
Le type ou le format du paramètre url n'est pas correct.
L'appel ne comporte pas le nombre requis de paramètres.
Evénements
onCancel
Invoqué lorsque l'utilisateur ferme la boîte de dialogue.
onComplete
Appelé en cas de réussite de l'opération de téléchargement montant.
onHTTPError
Appelé lorsqu'un envoi échoue en raison d'une erreur HTTP.
onIOError
Invoqué dans l'un des cas suivants :
Le chargement échoue en raison d'une erreur d'entrée/sortie lors de la lecture, l'écriture ou la transmission du fichier par Flash Player.
Le fichier SWF tente de charger un fichier sur un serveur nécessitant une authentification (comme un nom d'utilisateur et un mot de passe). Au cours du chargement, Flash Player ne permet pas aux utilisateurs d'entrer des mots de passe.
Le chargement échoue parce que le paramètre url renferme un protocole invalide. FileReference.upload() doit utiliser HTTP ou HTTPS.
onOpen
Invoqué lors du démarrage d'un téléchargement montant.
onProgress
Appelé régulièrement pendant le téléchargement du fichier.
onSecurityError
Appelé lorsqu'un envoi ou un téléchargement échoue en raison d'une erreur de sécurité.
Exemple
L'exemple suivant montre l'implémentation de la méthode upload() en informant d'abord l'utilisateur de choisir un fichier à télécharger, puis en gérant les écouteurs onSelect et onCancel, pour finalement gérer les résultats du téléchargement en cours.
import flash.net.FileReference;
var allTypes:Array = new Array();
var imageTypes:Object = new Object();
imageTypes.description = "Images (*.jpg, *.jpeg, *.gif, *.png)";
imageTypes.extension = "*.jpg; *.jpeg; *.gif; *.png";
allTypes.push(imageTypes);
var listener:Object = new Object();
listener.onSelect = function(file:FileReference):Void {
trace("onSelect: " + file.name);
if(!file.upload("http://www.yourdomain.com/yourUploadHandlerScript.cfm")) {
trace("Upload dialog failed to open.");
}
}
listener.onCancel = function(file:FileReference):Void {
trace("onCancel");
}
listener.onOpen = function(file:FileReference):Void {
trace("onOpen: " + file.name);
}
listener.onProgress = function(file:FileReference, bytesLoaded:Number, bytesTotal:Number):Void {
trace("onProgress with bytesLoaded: " + bytesLoaded + " bytesTotal: " + bytesTotal);
}
listener.onComplete = function(file:FileReference):Void {
trace("onComplete: " + file.name);
}
listener.onHTTPError = function(file:FileReference):Void {
trace("onHTTPError: " + file.name);
}
listener.onIOError = function(file:FileReference):Void {
trace("onIOError: " + file.name);
}
listener.onSecurityError = function(file:FileReference, errorString:String):Void {
trace("onSecurityError: " + file.name + " errorString: " + errorString);
}
var fileRef:FileReference = new FileReference();
fileRef.addListener(listener);
fileRef.browse(allTypes); |