setFixedLengthStreamingMode не работает для запроса HTTP PUT к s3 - PullRequest
0 голосов
/ 25 июня 2018

Я пытаюсь выполнить запрос HTTP PUT для URL-адреса s3, используя HttpURLConnection.Но почему-то setFixedLengthStreamingMode у меня не работает.Может кто-нибудь помочь?

HttpURLConnection connection = (HttpURLConnection) new URL(uploadLocation).openConnection();
connection.setRequestProperty("x-amz-server-side-encryption", CommonConstants.AMZ_SERVER_SIDE_ENCRYPTION);
connection.setDoOutput(true);
connection.setRequestMethod("PUT");
connection.setFixedLengthStreamingMode((int) new File(localFilePath).length());

Последнее утверждение ничего не делает.Если я делаю connection.getContentLength(), это показывает -1.Может кто-нибудь помочь?

edit: Я на самом деле пытаюсь это сделать, но это не работает.получение исключения java io: поток закрыт.

    BufferedOutputStream out = new BufferedOutputStream(connection.getOutputStream());
    FileInputStream input = new FileInputStream(localFilePath);
    int length;
    while ((length = input.read(buffer)) > 0) {
      out.write(buffer, 0, length);
    }
    input.close();
    out.close();

1 Ответ

0 голосов
/ 25 июня 2018

HttpURLConnection.getContentLength() возвращает длину ответа, а не запроса.

...