У меня есть следующий код:
app.controller("carousels", function($http, $location, $rootScope, $state, $stateParams, $scope, PopUp, DTColumnDefBuilder, DTOptionsBuilder) {
{ ... }
$scope.save = function() {
$http({
method: "POST",
url: "./controllers/carousels/create.php",
headers: {
"Content-Type": "multipart/form-data"},
data: $scope.carousels,
transformRequest: function (data, headersGetter) {
var formData = new FormData(),
headers = headersGetter();
angular.forEach(data, function (value, key) {
formData.append(key, value);
});
delete headers["Content-Type"];
return formData;
}
}).success(function(response) {
console.log(response);
});
};
});
Файл create.php полностью пуст, и функция сохранения вызывается с помощью ng-submit в теге формы.
<form name="form" ng-submit="save()">
<div class="box box-default">
<div class="box-header with-border"></div>
<div class="box-body">
<div class="form-group" has-error>
<label for="image">{{ "txt.pages.carousels.fields.image" | translate }}*</label>
<div class="fileinput fileinput-new input-group" data-provides="fileinput">
<div style="display: table-row;">
<div class="form-control" data-trigger="fileinput">
<i class="glyphicon glyphicon-file fileinput-exists"></i>
<span class="fileinput-filename"></span>
</div>
<span class="btn btn-default btn-file input-group-addon">
<span>{{ "txt.action.file" | translate }}</span>
<input type="file" accept="image/*" name="image" id="image" ng-model="carousels.image" ngf-select required>
</span>
</div>
<div class="fileinput-preview thumbnail" data-trigger="fileinput">
<img ng-src="./uploads/{{ carousels.image }}">
</div>
</div>
</div>
</div>
<div class="box-footer">
<button type="submit" class="btn btn-default">{{ "txt.action.save" | translate }}</button>
</div>
</div>
</form>
После отправки формы консоль возвращает следующее сообщение:
Предупреждение: Отсутствует граница в POST-данных multipart / form-data в неизвестный онлайн 0
Этот код всегда работал правильно во всех моих проектах, но на этот раз выдает эту ошибку, и я не могу найти решение.
Единственное отличие этого проекта от других заключается в том, что в этом я использую UI-Router. Я пытался найти связь между ними, но ничего не нашел.
Кто-нибудь знает, что может быть причиной этой ошибки и как ее исправить?
После долгого времени и просмотра различных функций через Интернет, просто изменили заголовок:
headers: {
"Content-Type": "multipart/form-data"},
Для того, чтобы:
headers: {
"Content-Type": undefined
},
И код снова функционирует нормально.
Спасибо вам за помощь.
Почему вы удаляете тип контента в transformRequest, если вы анализируете его через свойство «header»?
Вы пытались не удалять контент-тип?
Вместо отправки данных как multipart/form-data
:
headers: {
'Content-Type': "multipart/form-data'
}
Вы должны отправить его как application/json
:
headers: {
'Content-Type': 'application/json'
}
Если проблема не устранена, вы также можете изменить data
в params
,