#java #spring #spring-boot #resttemplate
Вопрос:
Я хочу написать клиентский код для использования API. API ожидает текстовый файл. Когда я выбираю опцию двоичного файла в инструменте почтальона и выбираю любой текстовый файл из моего локального, он работал. как это реализовать весной ?. Я пробовал MULTIPART_FORM_DATA, но безуспешно.
Комментарии:
1. Покажите свои усилия
Ответ №1:
Если Вы имеете в виду файл
@RestController
public class FileContentController {
@RequestMapping(value="/up", method = RequestMethod.POST)
public ResponseEntity<?> upload(@RequestParam("file") MultipartFile file)
throws IOException {
String contentType=file.getContentType());
InputStream i=file.getInputStream();
return new ResponseEntity<>(HttpStatus.OK);
}
return null;
}
также spring boot имеет несколько компонентов, вы должны включить его и установить размер и tempdir
,в более ранней версии spring boot нужно добавить:
spring.servlet.multipart.max-file-size=128KB
spring.servlet.multipart.max-request-size=128KB
spring.servlet.multipart.enabled=true
spring.servlet.multipart.location=${java.io.tmpdir}
Однако в вашем клиентском коде вы не должны устанавливать приложение типа контента/json в своем заголовке post-запроса
простая выборка должна быть такой
const input = document.getElementById('uploadInput');
const data = new FormData();
data.append('file', input.files[0]);
var resp = await fetch('upload/', {
method: 'POST',
body: data
});
if (!resp.ok) {
throw new Error(`HTTP error! status: ${resp.status}`);
}
if (resp.ok) {
await this.images();
}