Как опубликовать blob и строку с XMLHttpRequest javascript и PHP [duplicate]

Я пытаюсь использовать SUBSTRING_INDEX(string,delimiter,count)

mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);
-> 'www.mysql'

mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2);
-> 'mysql.com'

подробнее о mysql.com http://dev.mysql.com/doc/refman/5.1/en/string-functions. HTML # function_substring индекс

7
задан jimiayler 17 May 2013 в 19:51
поделиться

2 ответа

Функция JavaScript на стороне клиента для загрузки блога WAV:

function upload(blob) {
  var xhr=new XMLHttpRequest();
  xhr.onload=function(e) {
      if(this.readyState === 4) {
          console.log("Server returned: ",e.target.responseText);
      }
  };
  var fd=new FormData();
  fd.append("that_random_filename.wav",blob);
  xhr.open("POST","<url>",true);
  xhr.send(fd);
}

PHP-файл upload_wav.php:

<?php
// get the temporary name that PHP gave to the uploaded file
$tmp_filename=$_FILES["that_random_filename.wav"]["tmp_name"];
// rename the temporary file (because PHP deletes the file as soon as it's done with it)
rename($tmp_filename,"/tmp/uploaded_audio.wav");
?>

, после которого вы можете воспроизвести файл /tmp/uploaded_audio.wav.

Но помните! /tmp/uploaded_audio.wav был создан пользователем www-data и (по умолчанию PHP) не читается пользователем. Чтобы автоматизировать добавление соответствующих разрешений, добавьте строку

chmod("/tmp/uploaded_audio.wav",0755);

в конец PHP (до конечного тега PHP ?>).

Надеюсь, что это поможет.

16
ответ дан NETCreator Hosting - WebDesign 19 August 2018 в 03:02
поделиться
  • 1
    Он делает - спасибо миллион! – jimiayler 20 May 2013 в 17:56
  • 2
    Любая идея, как применить выше, к webaudiodemos.appspot.com/AudioRecorder/index.html ? То, как они написали свой код, настолько смущает меня. – Ael 9 October 2017 в 22:32
  • 3
    Argh. Слишком долго, сохранит как отдельный ответ. – cwilso 9 October 2017 в 23:02
  • 4
    Я получаю ошибку PHP Неопределенный индекс: that_random_filename.wav Выполняет ли это, когда blob является AudioBuffer? – Curtis 8 July 2018 в 21:20
  • 5
    Хорошо, это не работает, потому что PHP должен быть $ _FILES [& quot; that_random_filename_wav & quot;], потому что период не разрешен в имени для ввода формы. – Curtis 9 July 2018 в 01:33

Самый простой способ, если вы просто хотите взломать этот код, - зайти в recorderWorker.js и взломать функцию exportWAV () примерно так:

function exportWAV(type){
    var bufferL = mergeBuffers(recBuffersL, recLength);
    var bufferR = mergeBuffers(recBuffersR, recLength);
    var interleaved = interleave(bufferL, bufferR);
    var dataview = encodeWAV(interleaved);
    var audioBlob = new Blob([dataview], { type: type });

    var xhr=new XMLHttpRequest();
    xhr.onload=function(e) {
        if(this.readyState === 4) {
            console.log("Server returned: ",e.target.responseText);
        }
    };
    var fd=new FormData();
    fd.append("that_random_filename.wav",audioBlob);
    xhr.open("POST","<url>",true);
    xhr.send(fd);
}

Затем этот метод сэкономит на сервер из рабочего потока, вместо того, чтобы возвращать его в основной поток. (Комплексный механизм на основе Worker в RecorderJS состоит в том, что большой код должен выполняться за нить.)

На самом деле, в идеале, вы бы просто использовали MediaRecorder сегодня и пусть он делает кодировку, но это цельный «шарик из воска».

2
ответ дан cwilso 19 August 2018 в 03:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: