Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用<;输入>;要将上传的文件保存到javascript变量?_Javascript - Fatal编程技术网

如何使用<;输入>;要将上传的文件保存到javascript变量?

如何使用<;输入>;要将上传的文件保存到javascript变量?,javascript,Javascript,我正在尝试学习如何使用输入上传标签来获取音频文件并播放它们 在我的HTML中,我有一个输入: <h3>Upload Song: <input id="song" type="file" accept="audio/*" oninput="updateSong()"></input></h3> 然后,一旦歌曲被保存,我想播放这首歌-作为一个测试,所以我知道它的作品 但是,当我使用此代码执行我的想法时,我得到了错误: TypeError: song.

我正在尝试学习如何使用输入上传标签来获取音频文件并播放它们

在我的HTML中,我有一个输入:

<h3>Upload Song: <input id="song" type="file" accept="audio/*" oninput="updateSong()"></input></h3>
然后,一旦歌曲被保存,我想播放这首歌-作为一个测试,所以我知道它的作品

但是,当我使用此代码执行我的想法时,我得到了错误:

TypeError: song.value.play is not a function
    at updateSong (/script.js:32:14)
    at HTMLInputElement.oninput (/:17:91)
我遗漏了什么导致代码无法运行的想法?我建立了歌曲,然后用歌曲更新变量。这似乎很简单,所以我不确定为什么它不起作用。

文件输入有一个,允许您枚举其文件列表

从那里,您可以使用创建一个临时Blob样式的对象URL,该URL引用来自用户计算机的文件

使用该URL,您可以实例化一个新的和。例如:

document.querySelector('input[type="file"]').addEventListener('input', (e) => {
  console.log(e.target.files);
  if (e.target.files.length) {
    const audio = new Audio(
      URL.createObjectURL(e.target.files[0])
    );
    audio.play();
  }
});
(JSFiddle:)


完成后别忘了稍后再做

歌曲
是一个
,而不是一个文件。无法播放
。阅读如何读取文件以及如何转换为dom元素SSO type=“file”不会告诉计算机它是一个文件?不会……它会告诉浏览器它是一个接受文件的输入
document.querySelector('input[type="file"]').addEventListener('input', (e) => {
  console.log(e.target.files);
  if (e.target.files.length) {
    const audio = new Audio(
      URL.createObjectURL(e.target.files[0])
    );
    audio.play();
  }
});