Php 发送不带输入类型的文件(类型音频)=";文件";在ajax中

Php 发送不带输入类型的文件(类型音频)=";文件";在ajax中,php,jquery,ajax,file,transfer,Php,Jquery,Ajax,File,Transfer,我在客户端(记录)创建一个文件,然后将其发送到远程服务器。但是,如果不使用输入文件,我找不到如何执行此操作,我有文件路径,但是当我需要通过ajax发送时,$\u FILES侧PHP中没有检测到它。如果我创建一个blob,它可以工作,但文件与录制不匹配 可能吗 [更新1] 该文件是音频/mpeg,该文件是在音频录制后创建的,在那里我可以获得位置并再次播放。我需要在用户不点击文件输入的情况下进行恢复 HTML PHP 在这里找到这个,我想这可能是你最好的选择: 步骤1:创建基本64种声音字体 首先,

我在客户端(记录)创建一个文件,然后将其发送到远程服务器。但是,如果不使用输入文件,我找不到如何执行此操作,我有文件路径,但是当我需要通过ajax发送时,$\u FILES侧PHP中没有检测到它。如果我创建一个blob,它可以工作,但文件与录制不匹配

可能吗

[更新1]

该文件是音频/mpeg,该文件是在音频录制后创建的,在那里我可以获得位置并再次播放。我需要在用户不点击文件输入的情况下进行恢复

HTML

PHP


在这里找到这个,我想这可能是你最好的选择:

步骤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); });