Раньше я спрашивал что-то подобное, но здесь есть несколько разные случаи и более подробные сведения.
У меня есть обработчик на стороне сервера, который принимает запросы POST multipart/form-data. Запрос содержит количество параметров POST и еще один параметр, который должен содержать файл изображения (этот последний параметр может существовать или не существовать). Как отправить такие запросы с помощью angularJS?
Я попробовал количество опций (все они знают без загрузки файлов), но никто из них не работает. Я получаю неправильный результат, потому что отсутствие Content-Type: multipart/form-data в HTTP-запросе или получение исключения из приложения Spark для веб-служб на основе Jetty (просьба не путать с Apache Spark), которая звучит как "... "Отсутствует начальная граница нескольких частей..." - в зависимости от деталей запроса.
Я пробовал это:
return $http({
method: 'POST',
url: editCompanyUrl,
headers: {'Content-Type': 'multipart/form-data'},
data: {
token: token,
userId: userId,
companyId: companyId,
companyName: $scope.companyName,
},
timeout: 500
}).then(function (data) {
console.log(data);
//Store Company ID which is used for saving purposes
//localStorage.setItem("companyId", data.data.Company.id);
return data.data.Company;
}, function (data) {
console.log(data);
})
и это, например
return $http({
method: 'POST',
url: editCompanyUrl,
headers: {'Content-Type': undefined},
data: {
token: token,
userId: userId,
companyId: companyId,
companyName: $scope.companyName,
},
timeout: 500
}).then(function (data) {
console.log(data);
//Store Company ID which is used for saving purposes
//localStorage.setItem("companyId", data.data.Company.id);
return data.data.Company;
}, function (data) {
console.log(data);
})
Не могли бы вы помочь? Каков правильный способ отправки многостраничных запросов?
Спасибо.
С уважением, Артем.
Можете ли вы показать нам полную ошибку. А также ваш код на стороне сервера. Чтобы получить содержание нескольких частей в Spark, вы должны использовать это на своей стороне сервера:
MultipartConfigElement multipartConfigElement = new MultipartConfigElement("Yourstoragedirectory");
request.raw().setAttribute("org.eclipse.jetty.multipartConfig", multipartConfigElement);
System.out.println(request.raw().getPart("file"));
Также убедитесь, что у вас есть последняя версия искры.
$ http предоставляет опцию: params.
Использовать параметры: вместо данных:
$http({
url: url,
method: "POST",
params: {
token: token,
userId: userId,
companyId: companyId,
companyName: $scope.companyName,
},
}).success(function(data, status, headers, config) {
//SUCCESS
}).
error(function(data, status, headers, config) {
//ERROR
});