Отправить файл (тип аудио) без ввода type = & quot; file & quot; в аяксе

Я создаю файл на клиенте (запись), а затем отправляю его на свой удаленный сервер. Однако я не могу найти, как это сделать без использования входного файла, у меня есть путь к файлу, но когда мне нужно отправить его по ajax, не обнаруживается в PHP стороне $ _FILES. Если я создаю BLOB-объект, он работает, но файл не соответствует записи.

Является ли это возможным?

[ОБНОВЛЕНИЕ 1]

Файл представляет собой аудио / MPEG, этот файл создается после аудиозаписи, где я получаю местоположение, и я могу воспроизвести его снова. Мне нужно восстановить без пользовательских нажатий на файл ввода

HTML

    <form   enctype="multipart/form-data" id="form_message" method="POST">
<textarea name="message" id="message" value="" placeholder="Ecris quelque chose"></textarea>
<input type="submit" style="display:none;" value="Valider"/>
</form>

JS

fd = new FormData();
fd.append('audiofile', 'filepath.mp3');
// other data
function submit_form_message(fd){
$.ajax({
type: 'POST',
url: "url",
data: fd,
processData: false,
contentType: false,
success: function(data){}
});
}

PHP

if($_FILES['audiofile']['size'] !=0){
if ($_FILES['audiofile']['error'] == 0){
$extensions_valides = array('mp3' , 'wav');
if(in_array($_POST['extension'],$extensions_valides)){
$tmp_name = $_FILES["audiofile"]["tmp_name"];
$name_file = $notId.".".$_POST['extension'];
move_uploaded_file($tmp_name, $_SERVER['DOCUMENT_ROOT']."/Bell/sound/".$name_file);
}
}
}

1

Решение

Нашел это здесь, которое, я думаю, может быть вашим лучшим выбором: Использование локального файла для Web Audio API в Javascript

Шаг 1: создайте звуковой шрифт Base 64

Сначала мне нужно преобразовать мой mp3 в строку в кодировке Base64 и сохранить ее
как JSON. Я нашел сайт, который делает это преобразование для меня здесь —
http://www.mobilefish.com/services/base64/base64.php Вам может понадобиться
удалить символы возврата с помощью текстового редактора, но для тех, кто
нужен пример, я нашел здесь несколько фортепианных тонов —
https://raw.github.com/mudcube/MIDI.js/master/soundfont/acoustic_grand_piano-mp3.js
Обратите внимание, что для работы с моим примером вам необходимо удалить
данные части заголовка: аудио / MPEG; base64,

Шаг 2: декодировать звуковой шрифт в ArrayBuffer

Вы могли бы реализовать это самостоятельно, но я нашел API, который делает это
отлично (зачем изобретать велосипед, верно?) —
https://github.com/danguer/blog-examples/blob/master/js/base64-binary.js
Ресурс взят из — здесь

Шаг 3: Добавление остальной части кода
Довольно просто

var cNote  = acoustic_grand_piano.C2;
var byteArray = Base64Binary.decodeArrayBuffer(cNote);
var context = new webkitAudioContext();

context.decodeAudioData(byteArray, function(buffer) {
var source = context.createBufferSource(); // creates a sound source
source.buffer = buffer;
source.connect(context.destination); // connect the source to the context's destination (the speakers)
source.noteOn(0);
}, function(err) { console.log("err(decodeAudioData): "+err); });

Поскольку вы передаете строку с содержимым Base64, вы не отправляете необработанный файл и, следовательно, не должны выбирать файл. Затем вы можете декодировать Base64 в PHP и записать его в новый аудиофайл на сервере.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]