flash – 替代在FileReference.save()AS3上锁定文件类型
更新:
正如Jacob在下面的回复中所讨论的,限制或纠正FileReference.save的行为是不可能的.任何人都可以建议一个替代方案(服务器是Apache / PHP)符合我在这篇文章中的所有标准,并避免我与雅各布讨论的陷阱? 结束编辑 我正在使用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(),如this tutorial所示,但是这会抛出一个错误,因为你一次只能执行一个FileReference调用. 解决方法
对不起,这是一个已知的主要Flash播放器错误,没有真正的解决方法.
在这里投票:https://bugs.adobe.com/jira/browse/FP-2014 (虽然出于某种原因,Adobe称其为功能请求.) 编辑2: 修复了适用于Chrome的FP 11.8,适用于Mac OS和Windows. https://bugbase.adobe.com/index.cfm?event=bug&id=2898055 编辑:添加navigateTo变通方法信息 有一个执行navigateTo()的php选项:将文件发布到具有mime类型的image / jpeg的php页面如果指定了正确的标题,则可以让浏览器显示浏览器的本机保存对话框确实维持扩展.但是,该方法还有其他缺点: > flex中没有错误处理 >某些浏览器实际上会弹出一个消失的新窗口>有些人会离开窗户.>有些人根本没有任何新窗口. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |