частично загрузить файл с Javascript

мы на самом деле работаем над органайзером удаленной музыкальной библиотеки, используя javascript, и я хотел бы знать, есть ли способ загрузить с помощью js последние 128 байтов файла MP3, чтобы получить его теги ID3. благодаря.


person coolcoolcool    schedule 04.12.2012    source источник


Ответы (2)


Вы не можете сделать это только с помощью JavaScript. Вам понадобится что-то на сервере (что именно зависит от вашей серверной технологии), чтобы прочитать соответствующую часть файла. Затем в JavaScript вы можете просто вызвать эту серверную часть.

Обновление 1

Протокол HTTP поддерживает загрузку файлов по частям (вот что). Но, конечно, HTTP ничего не знает о файлах MP3, поэтому вам нужно знать, какой диапазон файла содержит тег ID3 в вашем JavaScript.

Обновление 2

Кажется более реальным, чем я изначально ожидал, загрузить только кусок URL-адреса на чистом JavaScript:

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

Это запрашивает последние 256 байт удаленного файла.

Обратите внимание, что на ваш запрос, конечно же, распространяются обычные ограничения того же происхождения, поэтому вы можете использовать его только для получения файлов с сервера, содержащего исходный HTML/JavaScript.

person Frank van Puffelen    schedule 04.12.2012
comment
спасибо, нашел это: stackoverflow.com/questions /1798879/ - person coolcoolcool; 04.12.2012
comment
Выглядит хорошо, если ваш сервер использует Python. Я просматривал некоторые из последних API-интерфейсов HTML5, чтобы узнать, что они поддерживают. Но пока весь частичный доступ к файлам предназначен только для файлов на стороне клиента, так что это вам не поможет. - person Frank van Puffelen; 04.12.2012
comment
ID3v1 всегда находится в последних 256 (или 512?) байтах. Таким образом, один диапазонный HTTP-запрос будет в порядке. - person ThiefMaster; 04.12.2012
comment
+1 за обновление заголовка Range. Я использовал это для поддержки изучения содержимого .zip, в конце которого есть информация, говорящая вам, где искать информацию о каталоге. Это означало, что я мог создать пользовательский интерфейс на основе браузера для изучения очень больших zip-архивов без загрузки всего zip-архива. - person Daniel Earwicker; 04.12.2012
comment
Да, я был весьма впечатлен тем, как далеко я мог довольно легко зайти, запрашивая диапазоны. Сначала я рассматривал файловые API в семействе HTML5. Но снова ответ, кажется, в старом добром HTTP - впечатляющая спецификация, если я когда-либо видел ее. - person Frank van Puffelen; 04.12.2012
comment
Отличный ответ, и мне нравится ваш энтузиазм по поводу результатов. :D - person Michael Gaskill; 08.06.2016

Без использования серверного языка программирования: нет.

Вы можете использовать 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);
?>
person Dillen Meijboom    schedule 04.12.2012
comment
Не забудьте написать собственную функцию для получения информации о MP3. Также в моем примере Javascript у вас должен быть ключ id3 в информационном массиве. - person Dillen Meijboom; 04.12.2012