我正在制作一个基于浏览器的音频播放器。因此,为了从我正在使用的本地目录制作播放列表:
<input type="file" id="getFile" />
然后我使用一个按钮来确认播放列表。单击按钮时,我正在调用一个 javascript 函数来更改音频标签的 src 以播放在播放列表中选择的新音频文件。我希望输入文件中文件的确切路径在 HTML5 音频播放器中运行,但它开始将路径设为 C://Fakepath/filename.mp3。有人可以帮我弄这个吗。
我正在制作一个基于浏览器的音频播放器。因此,为了从我正在使用的本地目录制作播放列表:
<input type="file" id="getFile" />
然后我使用一个按钮来确认播放列表。单击按钮时,我正在调用一个 javascript 函数来更改音频标签的 src 以播放在播放列表中选择的新音频文件。我希望输入文件中文件的确切路径在 HTML5 音频播放器中运行,但它开始将路径设为 C://Fakepath/filename.mp3。有人可以帮我弄这个吗。
这是设计使然的安全功能。您应该无法将文件输入的原始文件路径读取到浏览器表单中。文件输入仅用于读取文件内容,而不是像用户文件系统上的路径这样的元数据。
好消息是您不需要原始文件路径。您可以使用FileReader
'sreadAsDataURL
将文件内容转换为 base64 编码的数据 URL 并将其用作音频src
。通过(也可作为工作小提琴)读取#myUploadInput
和输出:#myAudioElement
var reader = new FileReader();
reader.onload = function (event) {
document.getElementById("myAudioElement").src = event.target.result;
};
reader.readAsDataURL(document.getElementById("myUploadInput").files[0]);
如果用户正在“构建”/根据他们在本地拥有的文件创建播放列表,您可以在他们选择本地音频文件的地方执行“浏览”字段,然后获取该字段的内容(应该包括这些图像),构建一个计数/ID、文件名.mp3和路径的数组......然后,根据“选择”播放的内容,重新组装完整的本地路径并播放该文件。
这将是我无论如何都会采取的一种方法,看看它是否有效。这里必要的部分是让用户披露音频文件的路径......但考虑到早期评论者发布链接的安全功能,我仍然不能 100% 确定它会起作用。
如果这包含在用户批准本地安装的应用程序中,您可以使用“应用程序目录”引用它并将文件复制到该“安全位置”,但由于它基于 Web,它实际上会打开一整罐蠕虫就可能未经批准/授权的网络功能而言,知道您的本地目录结构。祝你好运,如果你找到解决方案,请告诉我。