Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.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
Javascript php ajax文件上载,$\u文件为空_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript php ajax文件上载,$\u文件为空

Javascript php ajax文件上载,$\u文件为空,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我有一个blob对象,需要将一些数据发布到fileHandler.php 所以我将它们打包到FormData中: console.log("start saving"); var url1 = URL.createObjectURL(blob); var url2 = "data:application/octet-stream," + encodeURIComponent(JSON.stringify(dataPack)); co

我有一个blob对象,需要将一些数据发布到fileHandler.php

所以我将它们打包到FormData中:

        console.log("start saving");
        var url1 = URL.createObjectURL(blob);
        var url2 = "data:application/octet-stream," + encodeURIComponent(JSON.stringify(dataPack));
        console.log(url1);
        console.log(url2);
        fd.append('realName', dataPack.name);
        fd.append("ans", JSON.stringify(dataPack.ans));
        fd.append("log", JSON.stringify(dataPack.log));
        fd.append("part", dataPack.part);
        fd.append('fileToUpload', blob);
        window.postData = fd;
并通过ajax上传:

    $.ajax({
        type: 'POST',
        url: '../php/fileHandler.php',
        data: postData,
        processData: false,
        contentType: false,
        success: function() {
            uploadSuccess();
        },
        error: function() {
            uploadFail();
        },
        progress: function(e) {
            console.log(e);
            //make sure we can compute the length
            if(e.lengthComputable) {
                //calculate the percentage loaded
                var pct = parseInt((e.loaded / e.total) * 100);

                //log percentage loaded
                $('#uploadProgress').width(pct+"%").text(pct+"%");
                console.log(pct);
            }
            //this usually happens when Content-Length isn't set
            else {
                console.warn('Content Length not reported!');
            }
        }
    }).done(function(data) {
        console.log(data);
        if(data ==="ok") {
            uploadSuccess();
        }
        else {
            uploadFail();
        }
    });
php文件处理程序:

<?php
$target_dir = "uploads/";
$realName = trim($_POST['realName']);
$part = $_POST['part'];
$ans = json_decode($_POST['ans']);
$log = json_decode($_POST['log']);
$fileNameNoEx = $target_dir . $realName . "-" . $part ."-". time();
$target_file = $fileNameNoEx . ".mp3";
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);

// Check if file already exists
if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}

// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
    echo "Sorry, your file was not uploaded.";

// if everything is ok, try to upload file
} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        //save files
        $f = fopen($fileNameNoEx.".txt", "w");
        fwrite($f, "Answer log:\n");
        foreach ($ans as $page => $val) {
            fwrite($f, "$page : $val\n");
        }
        fwrite($f, "\nPage switching event log:\n");
        foreach ($log as $l) {
            fwrite($f, "{$l->time}s  --->  {$l->page}\n");
        }
        fclose($f);
        echo "ok";
    } else {
        var_dump($ans);
        var_dump($log);
        var_dump($_POST);
        var_dump($_FILES);
        var_dump($target_file);
        echo "asdsad";
        echo "Sorry, there was an error uploading your file.";
    }
}
postData似乎是空的?但当我在浏览器控制台中检查postData时:

> postData.get("fileToUpload")
File {name: "blob", lastModified: 1500101804839, lastModifiedDate: Sat Jul 15 2017 14:56:44 GMT+0800 (China Standard Time), webkitRelativePath: "", size: 12597888…}
> postData.get("realName")
"jjj"
为什么????$\u FILES[]和$\u POST[]如何有效


当文件非常大时,经常会出现此问题。

PHP有一个最大post大小,请尝试增加它:


如果PHP没有这个限制,我可以向您的web服务器发送无限大的帖子,直到它的磁盘或RAM用完。

您可以调用window.postData=fd;然后使用data:postData,,您确定正确访问了它吗?根据代码所在的位置,postData可能不是您期望的值scope@DelightedD0D我已经检查了控制台中的window.postData,它肯定存在。当然,但您没有使用window.postData。您只使用了此行中的postData:data:postData,。如果使用data:window.postData,会发生什么情况?不确定它是否在代码中起作用,这取决于代码的位置,您的代码可能在哪里fine@DelightedD0D我已经将postData更改为window.postData,并在控制台中再次测试ajax,但问题仍然存在。是的,没错!我只修改了上传最大文件大小错误忘记了上传最大文件大小!谢谢!
> postData.get("fileToUpload")
File {name: "blob", lastModified: 1500101804839, lastModifiedDate: Sat Jul 15 2017 14:56:44 GMT+0800 (China Standard Time), webkitRelativePath: "", size: 12597888…}
> postData.get("realName")
"jjj"