Альтернатива блокировке типа файла в FileReference.save () AS3

Обновление:

Как обсуждается в ответе Джейкоба ниже, ограничение или исправление поведения FileReference.save невозможно. Может ли кто-нибудь предложить альтернативу (сервер - Apache / PHP), которая соответствует всем моим критериям из этого сообщения и позволяет избежать ошибок, которые я обсуждал с Джейкобом?

Конец редактирования

Я сохраняю изображение из моего приложения AS3 с помощью FileReference .спасти(). Вот код, который отлично работает:

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 за раз.

file save dialog

8
задан shanethehat 1 July 2011 в 12:26
поделиться