Php 发送不带输入类型的文件(类型音频)=";文件";在ajax中
我在客户端(记录)创建一个文件,然后将其发送到远程服务器。但是,如果不使用输入文件,我找不到如何执行此操作,我有文件路径,但是当我需要通过ajax发送时,$\u FILES侧PHP中没有检测到它。如果我创建一个blob,它可以工作,但文件与录制不匹配 可能吗 [更新1] 该文件是音频/mpeg,该文件是在音频录制后创建的,在那里我可以获得位置并再次播放。我需要在用户不点击文件输入的情况下进行恢复 HTML PHPPhp 发送不带输入类型的文件(类型音频)=";文件";在ajax中,php,jquery,ajax,file,transfer,Php,Jquery,Ajax,File,Transfer,我在客户端(记录)创建一个文件,然后将其发送到远程服务器。但是,如果不使用输入文件,我找不到如何执行此操作,我有文件路径,但是当我需要通过ajax发送时,$\u FILES侧PHP中没有检测到它。如果我创建一个blob,它可以工作,但文件与录制不匹配 可能吗 [更新1] 该文件是音频/mpeg,该文件是在音频录制后创建的,在那里我可以获得位置并再次播放。我需要在用户不点击文件输入的情况下进行恢复 HTML PHP 在这里找到这个,我想这可能是你最好的选择: 步骤1:创建基本64种声音字体 首先,
在这里找到这个,我想这可能是你最好的选择: 步骤1:创建基本64种声音字体 首先,我需要将mp3转换为Base64编码字符串并存储它 作为JSON。我在这里找到了一个为我做这种转换的网站- 你可能需要 使用文本编辑器删除返回字符,但对于 需要一个例子我在这里找到了一些钢琴音调- 请注意,为了使用我的示例,您需要删除 报头部分数据:音频/mpeg;base64 步骤2:将声音字体解码为数组缓冲 您可以自己实现,但我发现了一个API可以实现这一点 完美(为什么要重新发明轮子,对吗?)- 从这里获取的资源 步骤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内容字符串,因此不发送原始文件,因此不需要选择文件。然后可以用PHP解码Base64并将其写入服务器上的新音频文件 这没有多大意义。该文件是否已在服务器上
$\u FILES[]
仅由通过表单post提交的文件填充。您能给我们一个HTML和PHP示例吗?表单是如何提交的?还有其他数据吗?还有其他数据正在等待!现在读这篇文章。我有一把小提琴,我认为它可以用,但仍在测试中。
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){}
});
}
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);
}
}
}
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); });