Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php和ajax将音频上传到文件中_Php_Ajax - Fatal编程技术网

使用php和ajax将音频上传到文件中

使用php和ajax将音频上传到文件中,php,ajax,Php,Ajax,我有以下php代码打开一个文件夹,将音频文件上传到其中: <?php if(!is_dir("upload")){ $res = mkdir("upload",0777); } // pull the raw binary data from the POST array $data = substr($_POST['bufferFile'], strpos($_POST['bufferFile'], ",") + 1); //echo($data); // decode it $d

我有以下php代码打开一个文件夹,将音频文件上传到其中:

<?php

if(!is_dir("upload")){
$res = mkdir("upload",0777); 
}

// pull the raw binary data from the POST array
$data = substr($_POST['bufferFile'], strpos($_POST['bufferFile'], ",") + 1);
//echo($data);
// decode it
$decodedData = base64_decode($data);
echo($decodedData);
//echo ($decodedData);
$filename = urldecode($_POST['fname']);
echo($filename);
// write the data out to the file
 $fp = fopen('upload/'.$filename, 'wb');
fwrite($fp, $decodedData);
fclose($fp);

?>
我相信这行代码$fp=fopen'upload/。$filename'wb';正在产生错误。wb模式不正确

据此,福彭

成功时返回文件指针资源,错误时返回FALSE

你的第一个警告

警告:fopenupload/audio_recording_2014-08-11T11:21:02.213Z.wav:无法打开流:第19行C:\wamp\www\JSSoundRecorder\upload.php中的参数无效

由不正确的wb模式导致

第二次和第三次警告

警告:fwrite希望参数1是resource,布尔值在第20行的C:\wamp\www\JSSoundRecorder\upload.php中给出

警告:fclose期望参数1是资源,布尔值在第21行的C:\wamp\www\JSSoundRecorder\upload.php中给出

是您假设fp是一种资源的结果。由于第一个警告,fp实际上是一个布尔值。它实际上有一个布尔值FALSE


也许你想用w+而不是wb。我希望这会有所帮助。

解决方案是名称冲突,因为新的Date.toISOString会创建一个新的名称。在导致te格式错误的名称中。只需更改文件名
  var reader = new FileReader();
var bufferFile;
var fileName = 'audio_recording_' +  new Date().toISOString() + '.wav';

reader.onload = function (event) {

  bufferFile = event.target.result;

    bufferFile = dataURItoArrayBuffer(bufferFile);

    postData(function() {
        var fd = new FormData();
        fd.append('fname', fileName);
        fd.append('bufferFile', bufferFile);
        $.ajax({
            type: 'POST',
            url: 'upload.php',
            data: fd,
            processData: false,
            contentType: false,
            success: function (data) {
                console.log(data);
            /*  $.ajax({
                    type: 'POST',
                    url: 'readFile.php',
                    data: {
                        "fileName": fileName,
                        "bufferFile": bufferFile
                    },
                    success: function (data) {
                        //console.log(data);


                    }
                });*/
            }
        });
    });
    console.log("nevermind");

};
reader.readAsDataURL(blob);