Обновление:
Как обсуждалось в ответе Джейкоба ниже, ограничение или исправление поведения FileReference.save невозможно. Кто-нибудь может предложить альтернативу (сервер Apache / PHP), которая соответствует всем моим критериям из этого поста и позволяет избежать ошибок, которые я обсуждал с Джейкобом?
Конец редактирования
Я сохраняю изображение из моего приложения AS3 с помощью FileReference.save (). Это код, который отлично работает:
var encoder:JPGEncoder = new JPGEncoder(80);
var byteData = encoder.encode(myBMD); //bitmap data object created earlier
var file:FileReference = new FileReference();
file.save(byteData, "myImage.jpg");
Откроется диалоговое окно сохранения файла, как и ожидалось. Я использую это, а не отправляю byteData в PHP, потому что я хочу, чтобы у пользователя было знакомое диалоговое окно, которое позволяет им устанавливать свое собственное имя файла.
Проблема возникает, когда пользователи настраивают свою операционную систему для отображения расширений файлов, как я. Это означает, что в диалоговом окне сохранения имя файла содержит расширение, как показано на рисунке ниже, и поэтому пользователю очень легко удалить это расширение при переименовании файла. Поскольку тип файла по умолчанию для этого поля - «Все файлы», если расширение удалено, файл сохраняется без типа.
Я не знаю ни одного способа заставить тип файла в диалоговом окне сохранения (если есть тот, который был бы моим предпочтительным маршрутом) настолько неудачный, что может кто-нибудь предложить безопасный способ сделать это, который все еще позволяет Пользователь сам устанавливает имя файла, используя стандартный диалог для своей ОС?
Я попытался выполнить вызов FileReference.browse () перед save (), как показано в этого урока , но это выдает ошибку, поскольку вы можете выполнить только один вызов FileReference за раз.