Я разрабатываю небольшой кусок для загрузки МНОЖЕСТВЕННЫХ ФОТО, используя Asp.Net Web Api 2 для серверной части и Angularjs для клиентской стороны. Где-то по пути я наткнулся на кусок кода JQuery, который отлично работает, но когда я просто пишу то же самое, используя Angularjs, он ведет себя по-другому, с точки зрения серверной стороны. Вот полное описание того, что происходит: Таким образом, следующий код показывает веб-апите часть:Различные заголовки в Angularjs и JQuery, в то время как POSTing для Web Api
public async Task<string> PostAsync()
{
List<string> str = new List<string>();
if (Request.Content.IsMimeMultipartContent())
{
// CASE 1...
}
else
{
// CASE 2...
}
return str;
}
Так как вы можете видеть, если заявление отделяет два случая, которые вызывают у меня неприятность. Теперь на стороне клиента, если я использую следующий JQuery кусок и ударил код Web API, он всегда [успешно] заканчивается в случае 1:
var data = new FormData();
for (i = 0; i < files.length; i++) {
data.append("file" + i, files[i]);
}
$.ajax({
type: "POST",
url: scope.serviceBase + "api/Property/PostAsync",
contentType: false,
processData: false,
data: data,
success: function (response) {
alert(response);
},
error: function() {
alert("Error while invoking the Web API");
}
});
, но если я использую идентичную Angularjs способ написания этого кода , это всегда заканчивается в случае 2, который является неисправностью в основном:
var data = new FormData();
for (i = 0; i < files.length; i++) {
data.append("file" + i, files[i]);
}
http.post(scope.serviceBase + 'api/Property/PostAsync', data, { headers: {'Content-Type':'multipart/form-data'} }).success(function (response) {
alert(response);
})
.error(function (response) {
alert(response);
});
Теперь то, что я заметил, используя пункты маркированного на стороне Web API, является то, что атрибут «тип контента», который отправляется сервер отличается в jquery и угловом коде. JQuery автоматически добавляет заголовок «content-type multipart/form-data border = blahblahblah ...», который не угловатый JS.
Можете ли вы помочь мне понять, что это за штука и почему она добавлена, также как я могу заставить Angularjs отправить правильный запрос, чтобы мой код на стороне сервера мог оказаться в CASE 1?
Спасибо! Работал отлично :) –