更新:
正如下面 Jacob 的回复中所讨论的,限制或纠正 FileReference.save 的行为是不可能的。谁能提出一个替代方案(服务器是 Apache/PHP),它符合我在这篇文章中的所有标准并避免我与 Jacob 讨论的陷阱?
结束编辑
我正在使用 FileReference.save() 从我的 AS3 应用程序中保存图像。这是代码,它工作正常:
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,因为我希望用户有一个熟悉的对话框,让他们设置自己的文件名。
当用户将他们的操作系统配置为显示文件扩展名时,问题就出现了,就像我一样。这意味着在保存对话框中,文件名包含如下图所示的扩展名,因此用户在重命名文件时很容易删除该扩展名。因为此框的默认文件类型是“所有文件”,所以如果删除扩展名,文件将不带类型保存。
我不知道有什么方法可以在保存对话框上强制使用文件类型(如果有一个是我首选的路径),所以如果失败了,任何人都可以建议我这样做的安全方法,仍然允许用户设置文件名本身使用其操作系统的标准对话框?
如本教程所示,我确实尝试在 save() 之前调用 FileReference.browse() ,但这会引发错误,因为您一次只能执行一个 FileReference 调用。