使用FileReader显示本地swf文件

时间:2016-09-08 11:15:38

标签: javascript html5

我正在尝试使用文件选择器功能从桌面选择SWF文件并将其显示在嵌入或对象标记中。我可以让选择器打开没有问题但是当选择SWF文件时,它会崩溃并且根本不会显示它。我尝试了多种不同的代码源。加载像PNG和JPG这样的东西很好,它们没有问题,但SWF文件没有运气。

我试图开始工作的代码段之一如下:

function handleFileSelect(evt) {
    var files = evt.target.files; // FileList object

    // Loop through the FileList and render image files as thumbnails.
    for (var i = 0, f; f = files[i]; i++) {

      var reader = new FileReader();

      // Closure to capture the file information.
      reader.onload = (function(theFile) {
        return function(e) {
          // Render thumbnail.
          var span = document.createElement('OBJECT');
          span.innerHTML = ['src="', e.target.result,
                            '" title="', escape(theFile.name), '"/>'].join('');
          //document.getElementById('list').insertBefore(span, null);
        };
      })(f);

      // Read in the image file as a data URL.
      reader.readAsDataURL(f);
    }
  }

  document.getElementById('files').addEventListener('change', handleFileSelect, false);

要注意它不一定是这个特定的代码块,任何想法或替代方案都是最受欢迎的。这是从与PNG和JPG等其他图像类型一起使用的版本修改的。

干杯

1 个答案:

答案 0 :(得分:0)

虽然我无法获得允许我从任何地方进行选择的解决方案,但我确实有一个允许我从同一文件夹位置进行选择的解决方案。它现在会做。 具体如下:

function handleFileSelect(evt) {
    var files = evt.target.files; // FileList object

    // files is a FileList of File objects. List some properties.
    var output = [];
    for (var i = 0, f; f = files[i]; i++) {
      output.push('<li>', escape(f.name),                 
                  '</li>');
    }

    var x = document.createElement("EMBED");
    x.setAttribute("src", output[1]);
    document.body.appendChild(x);

  }

  document.getElementById('files').addEventListener('change', handleFileSelect, false);

但是,只有当文件和SWF位于同一位置时,它才有效。