Извлечение аудио файла через Ajax - PullRequest
1 голос
/ 28 ноября 2011

Мне нужно извлечь аудиофайл с помощью Ajax и получить его в виде массива байтов. Мой бэкэнд на PHP.

В настоящее время я использую

<?php 
echo  file_get_contents("./mainFile.mp3");
?>

Это позволяет мне вернуть аудиофайл в виде массива байтов. Но как я могу получить его в Javascript в виде байтового массива. Я сослался на эту ссылку на SO

Но это не совсем правильный путь. Может кто-нибудь, пожалуйста, предложить что-то ???

Ответы [ 4 ]

1 голос
/ 28 ноября 2011

Сохраните файл с именем: raw_audio.php

<?php 
    echo  file_get_contents("./mainFile.mp3");
?>

Теперь загрузите этот php-файл из вашего вызова ajax.

$.ajax({
url:'raw_audio.php',
success: function(data)
{
 var raw=data;
}
});
0 голосов
/ 28 ноября 2011

Попробуйте использовать тип ответа 'arraybuffer':

request = new XMLHttpRequest();
request.responseType = "arraybuffer";
// ...
0 голосов
/ 28 ноября 2011

Вам нужно от overrideMimeType() до "text/plain; charset=x-user-defined" примерно так:

$.ajax( {

        url: "php.php",

        beforeSend: function( xhr ){
        xhr.overrideMimeType( "text/plain; charset=x-user-defined" );
        },

        success: function( text ) {
        var i, l = text.length, bytes = [];

            for( i = 0; i < l; ++i ) {
            bytes.push( text.charCodeAt(i) & 0xFF );
            }
        console.log( bytes.length );
        }

});

Обратите внимание, что это крайне бесполезно, битовые операции в javascript чрезвычайно быстры только для строк + charCodeAt.Даже быстрее, чем на типизированных массивах, как я шокирующе обнаружил в моем приложении.

Текст / plain не важен, но кодировка -.

0 голосов
/ 28 ноября 2011

Что вы хотите сделать, так это прочитать файл через ajax «двоичным» способом. Я просто гуглил бинарный AJAX, и это первый результат, который появился ... не уверен, что это полезно http://nagoon97.wordpress.com/2008/04/06/reading-binary-files-using-ajax/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...