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