6

我们实际上正在使用 javascript 开发远程音乐库管理器,我想知道是否有一种方法可以使用 js 下载 MP3 文件的最后 128 字节以获得其 ID3 标签。谢谢。

4

2 回答 2

12

仅使用 JavaScript 无法做到这一点。您需要服务器上的某些东西(这完全取决于您的服务器端技术)来读取文件的相关部分。然后在 JavaScript 中,您可以调用该服务器端部分。

更新 1

HTTP 协议支持部分下载文件(就是这样)。但当然 HTTP 对 MP3 文件一无所知,因此您必须知道文件的哪个范围包含 JavaScript 中的 ID3 标记。

更新 2

用纯 JavaScript 下载 URL 的一部分似乎比我最初预期的更可行:

xhr = new XMLHttpRequest();
xhr.open("GET", "http://<your domain>/");
xhr.setRequestHeader("Range", "bytes=-256");
xhr.send();

这会请求远程文件的最后 256 个字节。

请注意,您的请求当然会受到通常的同源限制,因此您只能使用它从包含原始 HTML/JavaScript 的服务器中检索文件。

于 2012-12-04T14:07:09.220 回答
1

不使用服务器端编程语言:不。

您可以使用 Ajax 和 PHP(或任何其他编程语言)来获取 ID3 标记。

使用 jQuery,它看起来像这样:

function getInfo(func) {
$.ajax({
    url: "mp3info.php?file=" + url,
    dataType: "json",
    ready: function(result) {
        func(result);
    }
});
}

你像这样使用它:

getInfo(function(mp3info) {
    alert(mp3info.id3);
});

然后你的 PHP 文件看起来像这样:

<?php
$info = array(); //The MP3 info array
echo json_encode($info, true);
?>
于 2012-12-04T14:09:10.303 回答