使用PHP时出错move_uploaded_file()

时间:2016-03-06 14:28:24

标签: javascript php post xmlhttprequest

我是php的新手,我正在尝试使用move_uploaded_file()函数。

我首先从一些javascript / jquery发送一个HTTP POST请求到一个php文件,如下所示,带有音频blob ....我的php文件托管在一个微软的Azure服务器上......

    mediaRecorder.ondataavailable = function(e) {

    var fileType = 'audio';
    var fileName = 'test.ogg';

    var formData = new FormData();  
    formData.append(fileType + '-filename', fileName);
    formData.append(fileType + '-blob', e.data); 
    // e.data is the audio blob

    var request = new XMLHttpRequest();
    request.onreadystatechange = function () {
    if (request.readyState == 4 && request.status == 200) {
        console.log('wooo');
    }
    };
    request.open('POST', myserver/Test.php');
    request.send(formData);
    }

我的PHP代码接收此帖子请求,似乎收到没有错误的文件

    <?php
    print_r($_FILES);
    $temp = $_FILES['audio-blob']['tmp_name'];
    $name = $_FILES['audio-blob']['name'];


        if (isset($_FILES["audio-blob"])) {

            $fileName = $_POST["audio-filename"];
            $uploadDirectory = 'C:/Users/Liam/PhpRecordings/';

            if (move_uploaded_file($temp, $uploadDirectory . $fileName)) {
              echo("file moved!!!!");
            }
            else
            {
                echo(" problem moving uploaded file");
            }
        }
?>  
<html>
<body>
Test
</body>
</html>

<?
?>

然而,当试图移动文件时它没有成功,我得到了回声

  

移动上传文件的问题

完整的帖子回复在这里

  

阵列(       [audio-blob] =&gt;排列           (               [name] =&gt; BLOB               [type] =&gt;音频/ OGG               [tmp_name] =&gt; d:\本地的\ Temp \ phpA897.tmp               [错误] =&gt; 0               [size] =&gt; 15755           )

     

)问题移动上传文件测试

有人知道为什么没有发生文件移动吗?

由于

1 个答案:

答案 0 :(得分:0)

您的代码是否有足够的权限写入/Users/Liam/PhpRecordings/

尝试运行此代码并将输出添加到此答案的注释中:

echo file_put_contents('/Users/Liam/PhpRecordings/test.txt', 'testing_writing_to_file');

根据作者的进一步评论,$uploadDirectory的写权限存在问题。 SO上有类似的问题 - Write permissions on mac