【问题标题】:upload audio into a file using php and ajax使用 php 和 ajax 将音频上传到文件中
【发布时间】:2014-10-04 05:09:12
【问题描述】:

我有以下 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);

?>

我遇到以下错误:

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

警告:fwrite() 期望参数 1 是资源,布尔值在 C:\wamp\www\JSSoundRecorder\upload.php 第 20 行

中给出

警告:fclose() 期望参数 1 是资源,布尔值在 C:\wamp\www\JSSoundRecorder\upload.php 第 21 行中给出 有人可以帮我解决问题吗??

这是 javascript (ajax) 函数:

  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);

【问题讨论】:

    标签: php ajax


    【解决方案1】:

    我相信这条线 $fp = fopen('upload/'.$filename, 'wb'); 正在产生错误。 wb模式不正确。

    据此linkfopen

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

    你的第一个警告

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

    由不正确的wb 模式导致。

    第二个和第三个警告

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

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

    是由于您假设 fp 是一种资源。 fp 实际上是 boolean 因为第一个警告。它实际上的值为FALSE,即boolean

    也许您打算使用w+ 而不是wb。希望对你有帮助。

    【讨论】:

    • 解决方案是名称冲突,因为 new Date().toISOString() 创建了一个 .在导致格式错误的名称中。只需更改文件名
    猜你喜欢
    • 1970-01-01
    • 2015-06-05
    • 2017-08-11
    • 1970-01-01
    • 2021-04-22
    • 1970-01-01
    • 1970-01-01
    • 2014-04-26
    • 2011-12-25
    相关资源
    最近更新 更多