Javascript 无法使用ng file upload逐个上载文件。流限制?

Javascript 无法使用ng file upload逐个上载文件。流限制?,javascript,php,angularjs,Javascript,Php,Angularjs,我使用了这个示例中几乎相同的代码: 我面临以下问题。在浏览器端,我可以在调试控制台中看到一切都很好:若我发送了3个文件,我会看到3个状态为200的POST请求。但在“上传”文件夹中,我只能找到一个(第一个)文件 我发现服务器在保存前一个文件之前无法开始接收下一个文件。看起来像是某种文件流限制。如何修复它 这是我的实际代码: 上传程序: this.uploadFiles = function(files) { $scope.files = files; angula

我使用了这个示例中几乎相同的代码:

我面临以下问题。在浏览器端,我可以在调试控制台中看到一切都很好:若我发送了3个文件,我会看到3个状态为200的POST请求。但在“上传”文件夹中,我只能找到一个(第一个)文件

我发现服务器在保存前一个文件之前无法开始接收下一个文件。看起来像是某种文件流限制。如何修复它

这是我的实际代码:

上传程序:

this.uploadFiles = function(files) {
        $scope.files = files;
        angular.forEach(files, function(file) {
            file.upload = apiService.addFilesInDesk($rootScope.user.auth_token, $scope.deskData, file);

            file.upload.then(function (response) {
                $timeout(function () {
                    file.result = response.data;
                });
            }, function (response) {
                if (response.status > 0)
                    $scope.errorMsg = response.status + ': ' + response.data;
            }, function (evt) {
                file.progress = Math.min(100, parseInt(100.0 *
                    evt.loaded / evt.total));
            });
        });
    };
addFilesInDesk: function (authToken, deskData, attachedFile) {
        var randParam = _getRandParam();
        var upload = Upload.upload({
            url: config.apiLink + 'UploadDeskFile',
            data: {
                uploadfile: attachedFile,  auth_token: authToken,
                rand_param: randParam, key: _getRequestKey(randParam), desk_id: 1
            }
        });

        return upload;
    }
public function actionUploadDeskFile()
{
    $return = array(
        'result' => 'failed',
        'error' => array()
    );
    $user = Users::model()->find('auth_token="' . $_POST['auth_token'] . '"');
    if ($user) {
        $ext = explode('.', $_FILES['uploadfile']['name']);
        $modelFiles = new Files();
        $modelFiles->user_id = $user->id;
        $modelFiles->name = $_FILES['uploadfile']['name'];
        $modelFiles->link = date('Y-m-d-H-i-s-u') . '_crmFile_' . $user->id . '.' . $ext[1];
        $modelFiles->type = 'CrmFile';
        $modelFiles->save();
        $modelDeskFiles = new CrmDeskFiles();
        $modelDeskFiles->client_desk_id = $_POST['desk_id'];
        $modelDeskFiles->file_id = $modelFiles->id;
        $modelDeskFiles->save();
        $uploadDir = $_SERVER['DOCUMENT_ROOT'] . '/uploads/';
        $uploadFile = $uploadDir . basename($_FILES['uploadfile']['name']);
        copy($_FILES['uploadfile']['tmp_name'], $uploadFile);
        copy($uploadFile, $uploadDir . date('Y-m-d-H-i-s-u') . '_crmFile_' . Yii::app()->user->id . '.' . $ext[1]);
        unlink($uploadFile);
    } else {
        $return['description'] = 'User does not exist';
    }
    Json::render($return);
}
请求者:

this.uploadFiles = function(files) {
        $scope.files = files;
        angular.forEach(files, function(file) {
            file.upload = apiService.addFilesInDesk($rootScope.user.auth_token, $scope.deskData, file);

            file.upload.then(function (response) {
                $timeout(function () {
                    file.result = response.data;
                });
            }, function (response) {
                if (response.status > 0)
                    $scope.errorMsg = response.status + ': ' + response.data;
            }, function (evt) {
                file.progress = Math.min(100, parseInt(100.0 *
                    evt.loaded / evt.total));
            });
        });
    };
addFilesInDesk: function (authToken, deskData, attachedFile) {
        var randParam = _getRandParam();
        var upload = Upload.upload({
            url: config.apiLink + 'UploadDeskFile',
            data: {
                uploadfile: attachedFile,  auth_token: authToken,
                rand_param: randParam, key: _getRequestKey(randParam), desk_id: 1
            }
        });

        return upload;
    }
public function actionUploadDeskFile()
{
    $return = array(
        'result' => 'failed',
        'error' => array()
    );
    $user = Users::model()->find('auth_token="' . $_POST['auth_token'] . '"');
    if ($user) {
        $ext = explode('.', $_FILES['uploadfile']['name']);
        $modelFiles = new Files();
        $modelFiles->user_id = $user->id;
        $modelFiles->name = $_FILES['uploadfile']['name'];
        $modelFiles->link = date('Y-m-d-H-i-s-u') . '_crmFile_' . $user->id . '.' . $ext[1];
        $modelFiles->type = 'CrmFile';
        $modelFiles->save();
        $modelDeskFiles = new CrmDeskFiles();
        $modelDeskFiles->client_desk_id = $_POST['desk_id'];
        $modelDeskFiles->file_id = $modelFiles->id;
        $modelDeskFiles->save();
        $uploadDir = $_SERVER['DOCUMENT_ROOT'] . '/uploads/';
        $uploadFile = $uploadDir . basename($_FILES['uploadfile']['name']);
        copy($_FILES['uploadfile']['tmp_name'], $uploadFile);
        copy($uploadFile, $uploadDir . date('Y-m-d-H-i-s-u') . '_crmFile_' . Yii::app()->user->id . '.' . $ext[1]);
        unlink($uploadFile);
    } else {
        $return['description'] = 'User does not exist';
    }
    Json::render($return);
}
服务器端:

this.uploadFiles = function(files) {
        $scope.files = files;
        angular.forEach(files, function(file) {
            file.upload = apiService.addFilesInDesk($rootScope.user.auth_token, $scope.deskData, file);

            file.upload.then(function (response) {
                $timeout(function () {
                    file.result = response.data;
                });
            }, function (response) {
                if (response.status > 0)
                    $scope.errorMsg = response.status + ': ' + response.data;
            }, function (evt) {
                file.progress = Math.min(100, parseInt(100.0 *
                    evt.loaded / evt.total));
            });
        });
    };
addFilesInDesk: function (authToken, deskData, attachedFile) {
        var randParam = _getRandParam();
        var upload = Upload.upload({
            url: config.apiLink + 'UploadDeskFile',
            data: {
                uploadfile: attachedFile,  auth_token: authToken,
                rand_param: randParam, key: _getRequestKey(randParam), desk_id: 1
            }
        });

        return upload;
    }
public function actionUploadDeskFile()
{
    $return = array(
        'result' => 'failed',
        'error' => array()
    );
    $user = Users::model()->find('auth_token="' . $_POST['auth_token'] . '"');
    if ($user) {
        $ext = explode('.', $_FILES['uploadfile']['name']);
        $modelFiles = new Files();
        $modelFiles->user_id = $user->id;
        $modelFiles->name = $_FILES['uploadfile']['name'];
        $modelFiles->link = date('Y-m-d-H-i-s-u') . '_crmFile_' . $user->id . '.' . $ext[1];
        $modelFiles->type = 'CrmFile';
        $modelFiles->save();
        $modelDeskFiles = new CrmDeskFiles();
        $modelDeskFiles->client_desk_id = $_POST['desk_id'];
        $modelDeskFiles->file_id = $modelFiles->id;
        $modelDeskFiles->save();
        $uploadDir = $_SERVER['DOCUMENT_ROOT'] . '/uploads/';
        $uploadFile = $uploadDir . basename($_FILES['uploadfile']['name']);
        copy($_FILES['uploadfile']['tmp_name'], $uploadFile);
        copy($uploadFile, $uploadDir . date('Y-m-d-H-i-s-u') . '_crmFile_' . Yii::app()->user->id . '.' . $ext[1]);
        unlink($uploadFile);
    } else {
        $return['description'] = 'User does not exist';
    }
    Json::render($return);
}

$\u POST
是否包含不同的数据?@messerbill,我需要从
$\u POST
中提取我在请求者中发送的数据:rand_param、auth_token等。这就是我所问的-当调试服务器端时,
$\u POST
的内容是否每个请求都会更改?@messerbill,每个请求的
rand_param
key
的值不同,但结构相同。我担心如果文件写入器(将文件写入磁盘)当前正忙,PHP或Windows会拒绝该文件。但我也不知道。你有没有检查服务器端的
$\u POST['auth\u token']
serverside?是否
$\u POST
包含不同的数据?@messerbill,我需要从
$\u POST
中提取我在请求程序中发送的数据:rand\u param,auth\u token等等。这就是我问的问题-当你调试服务器端时,
$\u POST
的内容是否随请求而改变?@messerbill,我对每个请求的
rand_param
key
有不同的值,但结构是相同的。我担心如果文件写入器(将文件写入磁盘)当前正忙,PHP或Windows会拒绝该文件。但我也不知道。你有没有检查服务器端的
$\u POST['auth\u token']