ЗАГРУЗИТЬ файл на AWS S3 с предопределенной ссылкой Retrofit2 Android - PullRequest
1 голос
/ 14 марта 2019

У меня есть предварительно подписанный URL для загрузки из AWS S3, на который можно загрузить видеофайл. Тестирование на Почтальоне видео успешно загружено. Однако я получаю 403 возвращается при реализации в модернизации. Я не могу использовать многочастную загрузку для этой задачи.

сервисный звонок:

@Headers("Content-Type: video/mp4")
    @PUT
    fun uploadTaskAWS(@Url awsUrl: String, @Body filePart: RequestBody): Call<ResponseBody>

загрузка:

            val file = File(task.file_path)
            val requestFile = RequestBody.create(MediaType.parse("video/mp4"), file)
            val response = awsTaskUploadService.uploadTaskAWS(task.upload_url, requestFile)

Я убедился, что URL правильный. Добавлен заголовок типа контента, прикреплен скриншот почтальона. Получение 403 запрещенной ошибки

скриншот почтальона

Я нашел этот связанный вопрос, однако я все еще получаю 403. Загрузите файл на предварительно подписанный URL-адрес AWS S3, используя Retrofit2

Есть предложения?

Ответы [ 2 ]

0 голосов
/ 21 марта 2019

решение состояло в том, чтобы включить multipart и ожидать единый ответ, а не Call:

  @Multipart
    @PUT
    fun uploadAsset(
        @Header(CONTENT_TYPE) contentType: String,
        @Url uploadUrl: String,
        @Part file: MultipartBody.Part
    ): Single<ResponseBody>

, где contentType передается в

val requestFile = RequestBody.create(MediaType.parse(contentType), file)
val body = MultipartBody.Part.createFormData(mediaType, task.file_name, requestFile)
assetService.uploadAsset(contentType, task.upload_url, body)
0 голосов
/ 14 марта 2019

403 ошибка означает, что сервер знает, кто вы, но у вас нет прав для выполнения требуемого действия.

Если предварительно подписанный URL-адрес сформирован правильно, вы сможете загружать файлы без проверки подлинности.

Вы можете проверить, добавляет ли почтальон по умолчанию какую-либо аутентификацию AWS для запроса

Также вам необходимо явно указать версию протокола при подписании запросов при загрузке в регион, который использует только версию 4.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...