【问题标题】:HTML5 FileApi + FileReader - Feed <object> with SWFHTML5 FileApi + FileReader - 使用 SWF 提供 <object>
【发布时间】:2010-09-22 11:25:43
【问题描述】:

我想使用 HTML5 FileApi 将 SWF 读取到 OBJECT(或 EMBED,如果这样做更好?)。

我当前的代码在 Chrome/Iron 上崩溃(唯一的 stable 浏览器也支持 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 部分吗?它是如何正确完成的?有人知道吗?或者这是不完整的,我必须等待更好的实施?

【问题讨论】:

标签: javascript html fileapi


【解决方案1】:

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

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

这些选项中的后者更密集,并且需要您可能想要避免的服务器往返 - 只是您可能想要考虑的更多选项。

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

【讨论】:

  • 对于第一个建议,做我上面所做的已经返回了一个data: URI。至少这是在我分配 FileReader 以将其结果提供给 src 之后 &lt;img src&gt; 属性中的内容。第二个建议似乎可能会导致相同的错误,但也许它会以某种方式规避那个错误,我会尝试。我认为第三个也是最后一个会很好用。该网站是一个图像和 swf 上传服务。所以我会更改我的代码以立即上传所有内容并给它令牌:)。那我可以做这个建议了。
  • 选项#1的重要部分是base64编码。 SWF 文件是二进制数据,从 JavaScript 到 DOM 再到插件时,可能无法很好地处理。因此,我建议通过 btoa() 运行 e.target.result,然后创建一个类似“data:application/x-shockwave-flash;base64”的字符串,并添加一个 到使用 setAttribute("value", dataURI) 设置其值的 。说了这么多,使用反射器服务可能会更好。
  • 我必须检查什么 readAsDataURL(file);实际上返回......如果它已经是 base64 或不是......研究是由于......顺便说一句:我也可以尝试一个 OBJECT URL。怎么样?
  • @jimbojw。在这篇关于 fileapi 的帖子上需要一些帮助...stackoverflow.com/questions/21456216/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-04
  • 2011-07-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多