我最近一直在欺骗WebGL,并得到了一个Collada阅读器工作。问题是它很慢(Collada是一个非常详细的格式),所以我要开始转换文件到一个更容易使用的格式(可能是JSON)。事情是,我已经有代码来解析Javascript中的文件,所以我可以使用它作为我的出口商太!问题是节省。
现在,我知道我可以解析文件,将结果发送到服务器,并让浏览器从服务器请求文件作为下载。但在现实中,服务器与这个特定的过程无关,所以为什么要涉及?我已经有内存中所需的文件的内容。有没有什么办法,我可以提出用户使用纯javascript下载? (我怀疑,但也许会问…)
并要明确:我不是试图访问文件系统没有用户的知识!用户将提供一个文件(可能通过拖放),脚本将转换内存中的文件,并提示用户下载结果。就浏览器而言,所有这些都应该是“安全”的活动。
[编辑]:我没有提前,所以回答“Flash”的海报是足够有效,但我所做的一部分是试图突出可以做什么纯的HTML5 …所以Flash是在我的情况下。 (虽然这是一个完全有效的答案,任何人做一个“真正的”网络应用程序。)这是这样的情况下,看起来像我失去了运气,除非我想涉及服务器。不管怎么说,还是要谢谢你!
解决方法
OK,创建一个数据:URI绝对是我的伎俩,感谢马修和Dennkster指出的选择!这里基本上是怎么做的:
1)将所有内容转换为称为“内容”的字符串(例如,通过最初创建它或通过读取已经构建的页面的标签的innerHTML)。
2)构建数据URI:
uriContent = "data:application/octet-stream," + encodeURIComponent(content);
根据浏览器类型等,会有长度限制,但是例如。 Firefox 3.6.12工作到至少256k。编码在Base64而不是使用encodeURIComponent可能会使事情更有效率,但对我来说,确定。
3)打开一个新窗口并“重定向”到此URI提示我的JavaScript生成页面的下载位置:
newWindow = window.open(uriContent,'neuesDokument');
而已。