Модификация - загрузка изображения на S3 с использованием заранее заданного URL - PullRequest
0 голосов
/ 10 января 2020

Я получаю предварительно назначенный URL-адрес от Lambda, но не уверен, почему, когда я делаю запрос PUT на этот сгенерированный URL, мое изображение не загружается на S3.

Я точно следовал этим двум ответам , но это все еще не работает для меня

{ ссылка }

{ ссылка }

Может кто-нибудь указать, что я я делаю что-то не так?

public interface IUploadImages{
   @PUT
   Call<String> listRepos(@Url String url, @Body RequestBody image);
}

И мой призыв загрузить изображение:

        //Already checked to make sure mImageUri is not null
        File file = new File(StringUtils.getPath(this, mImageUri));
        RequestBody requestFile = RequestBody.create(MediaType.parse("image/jpeg"), file);

        RetrofitInterfaces.IUploadImages service = RetrofitClientInstance.getRetrofitInstance()
                .create(RetrofitInterfaces.IUploadImages.class);
        //Also checked to make sure mGeneraredUrl is also not null
        Call<String> call = service.listRepos(mGeneratedUrl, requestFile);
        call.enqueue(new Callback<String>() {
            @Override
            public void onResponse(Call<String> call, Response<String> response) {
                if(response.isSuccessful()){
                    Log.d(TAG, "onResponse: Success?");
                }
            }

            @Override
            public void onFailure(Call<String> call, Throwable t) {
                Log.d(TAG, "onFailure: Failed: " + t);
            }
        });         

Я сделал ведро publi c. Вызов не прерывается, но в onResponse я получаю код ответа 403.

1 Ответ

1 голос
/ 10 января 2020

Наконец-то понял. Ваша предопределенная функция url должна иметь тот же тип контента, что и

RequestBody.create(MediaType.parse("image/jpeg"), file);

Так что в моих параметрах

var params = {
    Bucket: 'my-bucket-name',
    Key: 'test-key',
    Expires: signedUrlExpireSeconds,
    ContentType: "image/jpeg"
};

Содержимое type должен быть на одной стороне клиента и на стороне функции, иначе вы получите ошибку 403 ...

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