Директива
.directive('fileModel', ['$parse', function ($parse) {
return {
restrict: 'A',
link: function(scope, element, attrs) {
var model = $parse(attrs.fileModel);
var modelSetter = model.assign;
element.bind('change', function(){
scope.$apply(function(){
modelSetter(scope, element[0].files[0]);
});
});
}
};
Контроллер
.controller('MainController', ['fileUpload', fileUpload) {
self.chainImgFile;
self.uploadFile = function(type){
if(type == 'hotelChain') {
var result = fileUpload.uploadFileToUrl(self.chainImgFile, {type: 'hotelChain', hotelChainId: self.uploadChainId});
} else {
var result = fileUpload.uploadFileToUrl(self.hotelImgFile, {type: 'hotel', hotelChainId: null});
}
self.showMessage(result);
};
Услуги
.service('fileUpload', ['$http', function($http) {
this.uploadFileToUrl = function(file, extraData) {
var fd = new FormData();
fd.append(extraData.type, file);
return $http.post(FILES_UPLOAD_URL, fd, {
transformRequest: angular.identity,
headers: {'Content-Type': undefined}
});
};
}]);
HTML
<form name="newDataForm" novalidate>
<div layout="column">
<label class="btn btn-outline-primary">
<span>Image</span>
<input type="file" file-model="MainController.chainImgFile"/>
<button ng-click="MainController.uploadFile('hotelChain')">Upload File</button>
</label>
</div>
</form>
PHP
$uploadPrefix = 'upl';
$tempPath = $_FILES['hotelChain']['tmp_name'];
$fileExtension = explode(".", $_FILES['hotelChain']['name']);
$uploadPath = '../../uploads/logos/hotelChains/' . $uploadPrefix . "." . end($fileExtension);
move_uploaded_file($tempPath, $uploadPath);
Я пытаюсь загрузить изображение, используя приведенный выше код, я проверил в консоли, и файл появляется на вкладке «Сеть», когда я нажимаю кнопку загрузки, но ничего не происходит, какие-либо выводы? Как я могу проверить, все ли отправляется правильно и получает ли файл PHP изображение?