HTML5 FileApi + FileReader - 使用SWF </object>提供<object>

时间:2010-09-22 11:25:44

标签: javascript html5 fileapi

我想使用HTML5 FileApi将SWF读取到OBJECT(或EMBED,如果最好做的话?)。

我当前的代码在Chrome / Iron(唯一支持xmlhttprequest v2 FormData的 stable 浏览器)上崩溃了。我得到它将图像数据读入即时创建的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部分吗?怎么做对了?有人知道吗?或者这是不完整的,我必须等待更好的实施?

1 个答案:

答案 0 :(得分:2)

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

  • base64使用btoa对数据进行编码,并使用data: URI
  • 进行设置
  • 而不是使用createElement创建对象,构造<object>标记,将所有属性作为HTML字符串(包括上面的base64建议),然后将其注入到{{1}的DOM元素中},
  • 创建一个反射器Web服务,您可以在其中发布swf内容,它会为您提供一个URL,然后将URL传递给该对象,
  • 与上一个类似,创建一个反射器Web服务,在其中POST swf内容,以全屏IFRAM为目标,让服务向后发送一个HTML文档,包括指向服务器的innerHTML

这些选项的后期更为激烈,需要从您可能想要避免的服务器往返 - 只需要考虑一些其他选项。

ActionScript 3有Loader,也可能有用。我不知道它是否支持<object> URI,但如果支持,则可以编写一个引导加载程序SWF,它直接运行本地swf文件的内容。