我如何使 html 或 javascript 在单击按钮时打开并显示文件系统中的 .swf 文件

How do I make html or javascript open and display .swf files from the file system on a button click

我找遍了所有地方,这里是我发现的全部内容:

<!DOCTYPE html>
<html>

<body>
    <input name="PickedFile" type="file" accept=".swf">
    <object width="550" height="400">
        <param name="movie" value="PickedFile">
        <script type="text/javascript" src="/path/to/swfobject.js"></script>
        <script type="text/javascript">
            function loadSWF(url) {
                swfobject.embedSWF(url, "flashcontent", "550", "400", "7");
            }
        </script>
        <p><a href="PickedFile" onclick="loadSWF(PickedFile); return false;">
          Click here to load the SWF!
       </a></p>
        <div id="flashcontent"></div>
    </object>
</body>

</html>

我希望它在 html 中,以便可以下载供离线使用

@AHBagheri,您可以显示从服务器外部加载的 SWF,我刚刚使用 Chrome 进行了验证。我很惊讶它起作用了。

@Ben,您的代码中存在多个缺陷。您的代码无法正常工作的原因有很多; SWFObject tutorial you based your SWF loading code on(来自 LearnSWFObject)在编写时并未考虑文件输入。

这是我在 Chrome (macOS) 中验证过的更新代码。请务必将 SWFObject <script> 指向您的 SWFObject 副本。

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <title>Local SWF Test</title>
</head>
<body>

  <div>
    <input id="PickedFile" type="file" accept="application/x-shockwave-flash"/><br/>
    <button id="btn_load">Load the SWF!</button>
  </div>

  <div id="flashcontent"></div>

  <script src="swfobject.js"></script>
  <script>
  var loadSWF = function (){

    var file = document.querySelector("#PickedFile");

    if(file && file.files[0]){
      swfobject.embedSWF(file.files[0].name, "flashcontent", "550", "400", "7");
    } else {
      alert("You need to pick a file first.");
    }

  };

  document.querySelector("#btn_load").addEventListener("click", loadSWF);
  </script>

</body>
</html>

您的代码的主要问题:

  1. 您将所有内容都放在 <object> 元素中。这不仅不正确,而且根本不需要 <object> 元素——这不是 SWFObject 的工作方式。我删除了 <object> 和相关的 <param> 节点。

  2. 输入的"accept"属性需要指定MIME类型,而不是文件扩展名。我改成了application/x-shockwave-flash.

  3. "PickedFile" 输入有名称但没有 ID。我删除了名称属性并添加了 ID 属性,因为这是使用 JavaScript 查找元素(在本例中为 document.querySelector)时的常见做法。请参阅 https://developer.mozilla.org/en-US/docs/Using_files_from_web_applications

  4. 中的示例
  5. 当您使用文件输入时,输入的值是一个文件数组,数组中的每一项实际上是一个包含文件详细信息的对象,包括名称和文件小路。由于您只希望文件输入中有一个文件,因此您需要获取第一个数组项 (files.file[0]),然后您可以使用它来访问文件名 (files.file[0].name).