Как отобразить весенний запрос на использование данных, отправленных с использованием MultipartEntityBuilder - PullRequest
0 голосов
/ 14 декабря 2018

У меня ниже код на стороне клиента означает, что написано само в классе 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);
    }

, но я хочу, чтобы это работало какСоставные данные формы файла, но без использования формы, какие изменения мне нужно сделать?Подскажите пожалуйста, где я ошибаюсь?

...