Javascript HTML5文件API+;文件阅读器-提要<;对象>;带SWF

Javascript HTML5文件API+;文件阅读器-提要<;对象>;带SWF,javascript,html,fileapi,Javascript,Html,Fileapi,我想使用HTML5 FileApi将SWF读取到对象(或者嵌入,如果这样做更好的话?) 我当前的代码在Chrome/Iron(唯一也支持xmlhttprequest v2 FormData的稳定浏览器)上崩溃。我用它将图像数据读入即时创建的IMG。但该对象会使浏览器中的当前选项卡崩溃 else if (file.type == "application/x-shockwave-flash") { var show = document.createElement("object");

我想使用HTML5 FileApi将SWF读取到
对象
(或者
嵌入
,如果这样做更好的话?)

我当前的代码在Chrome/Iron(唯一也支持xmlhttprequest v2 FormData的稳定浏览器)上崩溃。我用它将图像数据读入即时创建的IMG。但该对象会使浏览器中的当前选项卡崩溃

else if (file.type == "application/x-shockwave-flash") {
    var show = document.createElement("object");
    show.type = "application/x-shockwave-flash"
    show.style.width = "100%";
    show.style.height = "100%";
    show.id = "thumb";
    document.getElementById("thumbnails").appendChild(show);

    var reader = new FileReader();
    reader.onload = (function (aImg) { 
        return function (e) { aImg.data = e.target.result; }; 
    })(show);
    reader.readAsDataURL(file);

我真的读了
object.data
部分吗?如何做对?有人知道吗?或者这是不完整的,我必须等待更好的实现吗?

我建议尝试一些事情(按照复杂性增加的顺序):

  • base64使用对数据进行编码,并使用
  • 不要使用
    createElement
    创建对象,而是将带有所有属性的
    标记构造为HTML字符串(包括上面的base64建议),然后使用
    innerHTML
    将其注入DOM元素
  • 创建一个reflector web服务,在其中发布swf内容,它会给您一个URL,然后将URL传递给对象
  • 与前面的类似,创建一个reflector web服务,在其中发布swf内容,以全屏IFRAM为目标,让该服务吐回一个HTML文档,其中包含指向服务器的
<>这些选项的后期更为强烈,并且需要从服务器中往返,这可能是您希望避免的——只是您可能需要考虑的更多选项。
ActionScript3有一个可能也很有用的脚本。我不知道它是否支持
数据:
URI,但如果支持,您可以编写一个引导加载程序SWF,直接运行本地SWF文件的内容。

对于第一个建议,执行上面的操作已经返回了
数据:
URI。至少在我分配FileReader将其结果提供给src之后,
属性中就是这样。第二个建议似乎可能会导致同样的错误,但也许它以某种方式绕过了这个建议,我会试试。我认为第三个也是最后一个会很好用。该网站是一个图像和swf上传服务。所以我会修改我的代码,立即上传所有内容并给它标记:)。然后我可以做这个建议。选项1的重要部分是base64编码。SWF文件是二进制数据,当从JavaScript到DOM再到插件时,这些数据可能无法很好地传递。因此,我建议通过btoa()运行e.target.result,然后创建一个字符串,如“data:application/x-shockwave-flash;base64”+btoa(e.target.result),并使用setAttribute(“value”,dataURI)将其值集添加到。话虽如此,使用reflector服务可能会更好;实际上返回。。。如果它已经是base64或不是。。研究报告到期了。。顺便说一句:我也可以尝试一个对象URL。“这是怎么回事?”jimbojw。需要一些关于fileapi的帮助。。。请注意,show对象上的“data”属性不相关。您需要的是一个名为“movie”且值为“yourdata”的子节点。看见