Я пытаюсь отправить файл на контроллер, используя его в FormBodyPart, вместо того, чтобы напрямую отправлять ему файл. Вот код для создания коллекции файловSpring org.springframework.web.multipart.support.MissingServletRequestPartException, Required request part 'file' нет
private void addFile(Collection<FormBodyPart> parts, File inputFile, String fileType)
throws ClassificationException {
if (inputFile == null) {
throw new ClassificationException("Null input file provided");
}
if (!inputFile.exists()) {
throw new ClassificationException("Input file not found: " + inputFile.getAbsolutePath());
}
if (fileType != null) {
String charset = "UTF-8";
parts.add(new FormBodyPart("file", new FileBody(inputFile, fileType, charset)));
} else {
parts.add(new FormBodyPart("file", new FileBody(inputFile, inputFile.getName())));
}
}
Сбор деталей - это аррайалист, в который будут входить файлы.
Вот мой код для установки Http Entity
HttpPost httppost = new HttpPost("http://localhost:9000/upload1");
MultipartEntity reqEntity1 = new MultipartEntity();
FormBodyPart part1;
for (Iterator i$ = parts.iterator(); i$.hasNext(); reqEntity1.addPart(part1)) {
part1 = (FormBodyPart) i$.next();
System.out.println(part1.getHeader());
}
httppost.setEntity(reqEntity1);
HttpResponse response = httpclient.execute(httppost);
System.out.println(response);
Мой метод декларирование контроллера
String index(@RequestParam("file") MultipartFile uploadfile)
Я получаю сообщение об ошибке с сервера о том
[ 400] {«timestamp»: 1474898550131, «status»: 400, «error»: «Bad Request», «exception»: «o rg.springframework.web.multipart.support.MissingServletRequestPartException», "сообщение": "файл "Обязательная часть запроса нет", "пути": "/ upload1"}
Моего dispatcher.xml уже содержит bean of multipartResolver.
Я довольно новичок в веб-сервисах и, возможно, делаю какую-то глупую ошибку. Пожалуйста, помогите мне, спасибо заранее
Вы не должны использовать '$' в именах переменных. [Спецификация языка Java §3.8] (https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.8): * Знак '$' должен использоваться только в механически сгенерированный исходный код или, реже, для доступа к уже существующим именам в устаревших системах. * – Andreas
Вы уверены, что 'parts' не пуст? – Andreas
Когда я печатаю детали, он показывает «[[email protected]]», поэтому я не думаю, что он пуст. –