che ho letto circa le limitazioni di sicurezza per il caricamento di file in Flash Player 10. Secondo il FileReference docs for upload(), il caricamento non ha bisogno di essere innescato da un'azione avviata dall'utente (il browse() lo fa, ma questa è un'altra storia). Se così fosse, sarebbe forzare un'esperienza utente imbarazzante per il caricamento multi-file, dal momento che solo uno di upload può verificarsi in una sola volta - in modo che l'utente avrebbe dovuto fare clic (o premere un pulsante) una volta per file per avviare l'upload, ma solo quando il file precedente ha terminato il caricamento.Comprendere il modello di sicurezza di Flash Player 10 per il caricamento di file
La documentation for URLLoader.load(), d'altra parte, afferma:
In Flash Player 10 e versioni successive, se si utilizza un Content-Type (ad esempio "multipart/form-data") che contiene un upload (indicato da un parametro "nome file" in un "content-disposition" nel corpo POST ), l'operazione POST è soggetto alle norme di sicurezza applicate a caricati:
deve essere eseguita l'operazione POST in risposta a un utente iniziato da azione, come ad esempio un clic del mouse o premere il tasto.
This Flash Security article corrobora la documentazione URLLoader (vedere la sezione "API POST").
L'originale whitepaper, tuttavia, non indica questo - soltanto che un FileReference browse deve essere in risposta ad un'azione avviata dall'utente, non il (potenzialmente URLLoader-guidato) carica stessa:
Quando un file SWF utilizza il metodo FileReference.browse() e FileReference.upload() per caricare un file su un server, Flash Player fa rispettare due regole di sicurezza:
- FileReference.browse() deve essere chiamato da un gestore user-evento (mouse o eventi tastiera).
[...]
Flash Player applica queste stesse regole ogni volta che un API di rete è chiamata a svolgere un post che appare al server per contenere un upload.
Per quanto mi riguarda posso dire di effettivo utilizzo delle API URLLoader per caricare un file, gli arrivi infatti non bisogno di venire da un'azione avviata dall'utente; ma, è perché sto usando una versione di debug del player, o perché la documentazione è sbagliata? (O qualcos'altro?)
TL; DR: La documentazione contiene informazioni in conflitto, e non mi fido dei miei test sul campo (di fronte a documenti che dicono che non dovrebbero lavorare). Può URLLoader essere utilizzato per caricare un file senza l'interazione dell'utente? Oppure solo FileReference? (Questo ucciderebbe la maggior parte delle possibilità di pre-elaborazione dei file, che è ciò che mi interessa essere interessato a fare!)
Ah, è a causa del lettore Debug! Ma, per quanto ne so, FileReference * può * caricare file senza interazione dell'utente (semplicemente non può * navigare * per loro). Odio i doppi standard. – Cameron
Come hai postato nella tua domanda, e secondo adobe.com, 'FileReference.browse()' deve essere chiamato prima di 'FileReference.Upload()'. – Den
Sì, capisco :-) Ma immagina che l'utente faccia clic su un pulsante "sfoglia" e selezioni 17 file attraverso un 'FileReferenceList'. Questi 17 file possono quindi essere caricati senza ulteriore interazione dell'utente. Ma, se vogliamo modificarli in qualche modo prima di caricarli (ad esempio, ridimensionando i file di immagine sul client), l'utente dovrebbe fare clic su altre 17 volte, una volta per avviare ciascun caricamento (URLLoader). Questo è ciò che intendevo per doppio standard. Naturalmente, nessuno * in realtà * costringerà i propri utenti a fare clic su 17 volte quando esistono soluzioni alternative accettabili (come la codifica Base64). – Cameron