Я читал об ограничениях безопасности для загрузки файлов в Flash Player 10. Согласно документам FileReference для upload () , загрузка не должна инициироваться действием, инициированным пользователем. (browse () делает, но это другая история). Если это произойдет, это приведет к неудобному взаимодействию с пользователем при загрузке нескольких файлов, поскольку за один раз может произойти только одна загрузка - поэтому пользователю придется нажимать (или нажимать кнопку) один раз на файл, чтобы начать загрузку, но только когда предыдущий файл завершил загрузку.
Документация для URLLoader.load () , с другой стороны, гласит:
В Flash Player 10 и более поздних версиях, если вы используете составной Content-Type (для
пример "multipart / form-data"), который содержит загрузку (обозначенную
Параметр «filename» в заголовке «content-disposition» внутри POST
тело), операция POST подчиняется правилам безопасности, применяемым к
добавления:
Операция POST должна выполняться в ответ на инициированную пользователем
действие, такое как щелчок мыши или нажатие клавиши.
Эта статья о безопасности Flash подтверждает документацию URLLoader (см. Раздел «API POST»).
Оригинальная техническая документация , однако, не утверждает этого - только то, что FileReference browse должен быть в ответ на действие, инициированное пользователем, а не (возможно, управляемое URLLoader ) загрузить себя:
Когда SWF-файл использует FileReference.browse () и
FileReference.upload () методы для загрузки файла на сервер, Flash
Игрок применяет два правила безопасности:
- FileReference.browse () должен вызываться из обработчика пользовательских событий (события мыши или клавиатуры).
[...]
Flash Player применяет эти же правила в любое время
Сетевой API вызывается для выполнения POST, который появляется на сервере
содержать загрузку .
Насколько я могу судить по фактическому использованию URLLoader API для загрузки файла, загрузка действительно не должна происходить из действия, инициированного пользователем; но это потому, что я использую отладочную версию плеера или из-за неправильной документации? (Или что-то еще?)
TL; DR: Документация содержит противоречивую информацию, и я не доверяю своим полевым испытаниям (несмотря на то, что документы говорят, что они не должны работать). Можно ли использовать URLLoader для загрузки файла без взаимодействия с пользователем? Или только FileReference? (Это убило бы большинство возможностей предварительной обработки файлов, и это то, чем я заинтересован!)