Ce que j'essaie d'accomplir est de télécharger des données binaires, en particulier un ByteArray représentant une image PNG, vers un serveur utilisant la classe URLLoader en conjonction avec URLRequest.Exception de sécurité Flash inattendue lors de l'utilisation de URLLoader
Lorsque j'ai défini la propriété contentType
de l'URLRequest sur 'multipart/form-data' au lieu de la valeur par défaut, l'appel à urlLoader.load()
entraîne une exception de sécurité.
Lorsque je laisse la propriété contentType
par défaut, cela fonctionne correctement, mais prend beaucoup de temps (proportionnellement à la longueur du fichier PNG) pour télécharger le fichier sur le serveur. Donc, ma question est pourquoi est-ce que je reçois cette exception de sécurité? Et comment puis-je l'éviter?
Notez que mon SWF est servi à partir d'un serveur de développement, pas du système de fichiers local (le serveur de développement Google App Engine pour être précis).
Voici le code:
var pngFile:ByteArray = PNGEncoder.encode(bitmapData);
var urlRequest:URLRequest = new URLRequest('/API/uploadImage');
// With this line of code, the call to urlLoader.load() throws the following security exception:
// 'SecurityError: Error #2176: Certain actions, such as those that display a pop-up window, may only be invoked upon user interaction, for example by a mouse click or button press.'
urlRequest.contentType = 'multipart/form-data';
urlRequest.method = URLRequestMethod.POST;
urlRequest.data = pngFile;
urlRequest.requestHeaders.push(new URLRequestHeader('Cache-Control', 'no-cache'));
urlLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.TEXT;
urlLoader.addEventListener(Event.COMPLETE, onUploadComplete);
urlLoader.addEventListener(IOErrorEvent.IO_ERROR, onUploadError);
NextFrame.addCallback(function() {
urlLoader.load(urlRequest);
});
Merci beaucoup! J'ai été perplexe pendant des heures la nuit dernière ... J'ai dû modifier quelques trucs, alors vois ma réponse pour exactement comment ça a fini par fonctionner – Cameron
De rien. Oui, bon à savoir sur la frontière. Cordialement. – evilpenguin
je vous remercie beaucoup ... je fais rarement flash dev, mais j'avais besoin de mettre à jour un uploader, et cela m'a finalement sauvé :) – will