У меня ниже код на стороне клиента означает, что написано само в классе Java, никакая форма не используется для обработки
InputStream in = from one of API;
byte[] fileBytes = IOUtils.toByteArray(in);
ByteArrayInputStream bis = new ByteArrayInputStream(fileBytes);
HttpClient client = HttpClientBuilder.create().build();
HttpPost post = new HttpPost("http://localhost:9090/<app_context>/upload");
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.addBinaryBody("upfile", bis,ContentType.APPLICATION_OCTET_STREAM,"abc");
HttpEntity entity = builder.build();
post.setEntity(entity);
HttpResponse response = client.execute(post);
на стороне сервера
@RequestMapping(value = "/upload", method=RequestMethod.POST,consumes="application/octet-stream")
public ResponseEntity<String> uploadFile(@RequestBody byte[] fileIn) {
HttpStatus statusCode = HttpStatus.BAD_REQUEST;
System.out.println("file length = " + fileIn.length);
File file = new File("C:/DownloadFromStream");
if (!file.exists()) {
file.mkdirs();
}
ByteArrayInputStream bis = new ByteArrayInputStream(fileIn);
FileOutputStream writer;
try {
writer = new FileOutputStream(file + "\\" + "Test.txt");
byte[] buffer = new byte[102400];
int totalBytesRead = 0;
int bytesRead;
while ((bytesRead = bis.read(buffer)) > 0) {
writer.write(buffer, 0, bytesRead);
buffer = new byte[102400];
totalBytesRead += bytesRead;
}
statusCode = HttpStatus.OK;
writer.close();
} catch (FileNotFoundException e) {
statusCode = HttpStatus.INTERNAL_SERVER_ERROR;
e.printStackTrace();
} catch (IOException e) {
statusCode = HttpStatus.INTERNAL_SERVER_ERROR;
e.printStackTrace();
} catch (Exception e) {
statusCode = HttpStatus.INTERNAL_SERVER_ERROR;
e.printStackTrace();
}
return new ResponseEntity<String>(statusCode);
}
, но я хочу, чтобы это работало какСоставные данные формы файла, но без использования формы, какие изменения мне нужно сделать?Подскажите пожалуйста, где я ошибаюсь?