Поэтому я использую angular-file-upload
с angular-file-upload
Для этого мне нужен следующий контроллер:
app.controller('FileUploadCtrl', ['$scope', 'FileUploader', function($scope, FileUploader) { var uploader = $scope.uploader = new FileUploader({ url: 'js/controllers/upload.php', }); // FILTERS uploader.filters.push({ name: 'customFilter', fn: function(item /*{File|FileLikeObject}*/, options) { return this.queue.length < 10; } }); // CALLBACKS uploader.onWhenAddingFileFailed = function(item /*{File|FileLikeObject}*/, filter, options) { console.info('onWhenAddingFileFailed', item, filter, options); }; uploader.onAfterAddingFile = function(fileItem) { console.info('onAfterAddingFile', fileItem); }; uploader.onAfterAddingAll = function(addedFileItems) { console.info('onAfterAddingAll', addedFileItems); }; uploader.onBeforeUploadItem = function(item) { item.file.test = "gg"; console.info('onBeforeUploadItem', item); }; uploader.onProgressItem = function(fileItem, progress) { console.info('onProgressItem', fileItem, progress); }; uploader.onProgressAll = function(progress) { console.info('onProgressAll', progress); }; uploader.onSuccessItem = function(fileItem, response, status, headers) { console.info('onSuccessItem', fileItem, response, status, headers); }; uploader.onErrorItem = function(fileItem, response, status, headers) { console.info('onErrorItem', fileItem, response, status, headers); }; uploader.onCancelItem = function(fileItem, response, status, headers) { console.info('onCancelItem', fileItem, response, status, headers); }; uploader.onCompleteItem = function(fileItem, response, status, headers) { console.info('onCompleteItem', fileItem, response, status, headers); }; uploader.onCompleteAll = function() { console.info('onCompleteAll'); }; console.info('uploader', uploader); }]);
и следующий сценарий php:
<?php if ( !empty( $_FILES ) ) { $tempPath = $_FILES[ 'file' ][ 'tmp_name' ]; $uploadPath = dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'uploads' . DIRECTORY_SEPARATOR . $_FILES[ 'file' ][ 'name' ]; move_uploaded_file( $tempPath, $uploadPath ); $answer = array( 'answer' => 'File transfer completed' ); $json = json_encode( $answer ); echo $json; } else { echo 'No files'; } ?>
Теперь для некоторых из файлов, которые мне нужно загрузить, мне нужно указать, какой путь они должны предпринять (что зависит от значения в моем $sessionStorage
)
Итак, мой вопрос в том, как я могу отправить значение с файлом в PHPscript?
Вы можете отправлять значения в PHPscript с formData
свойства formData
:
app.controller('FileUploadCtrl', ['$scope', 'FileUploader', function($scope, FileUploader) { var uploader = $scope.uploader = new FileUploader({ url: 'js/controllers/upload.php', formData: [{ param1: 'value1', param2: 'value2', param3: 'value3' }] });
formData
– это массив, который будет отправлять ваши данные в $_REQUEST
в PHP.
Таким образом, вы можете использовать
$myValue1 = $_REQUEST['param1']; $myValue2 = $_REQUEST['param2']; $myValue3 = $_REQUEST['param3'];
за все, что вам нужно.