Я хочу реализовать загрузку файлов в моем приложении. Я использую AngularJS и написал метод в контроллере, чтобы получить все файлы из ввода формы. В консоли браузера у меня есть массив с выбранными файлами, но когда я отправляю этот массив на бэкэнд, он пуст. Я отправляю другие данные одним и тем же методом, и я могу читать его в скрипте PHP без проблем, только массив файлов пуст.
Это метод получения файлов со входа и отправки его на сервер:
$scope.addFilesFunction = function() {
$scope.filesList = document.getElementById('fileupload').files;
var fd = new FormData();
for (var i = 0; i < $scope.filesList.length; i++) {
fd.append('file', $scope.filesList[i]);
}
Database.insert('file', {'files': fd}, function(response) {
});
};
И это часть моего PHP-кода:
$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
$files = $request->files;
От: https://uncorkedstudios.com/blog/multipartformdata-file-upload-with-angularjs
Его трудно описать без кода, но похоже, что вы не отправляете фактические файлы на PHP.
.service('fileUpload', ['$http', function ($http) {
this.uploadFileToUrl = function(file, uploadUrl){
var fd = new FormData();
fd.append('file', file);
$http.post(uploadUrl, fd, {
transformRequest: angular.identity,
headers: {'Content-Type': undefined}
})
.success(function(){
})
.error(function(){
});
}
}]);
а также
var file = $scope.myFile;
var uploadUrl = 'http://www.example.com/yourphpscript.php';
fileUpload.uploadFileToUrl(file, uploadUrl);
а затем используйте ваш php-скрипт для обработки любой магии базы данных, которую вы хотите работать. Если вы хотите импортировать массив файлов, просто передайте массив в fileUpload, а затем выполните итерацию по вашему файловому массиву и добавьте их вместе с добавлением FormData.