2015-06-10 3 views
0

Используя приведенный ниже код, я могу подписать URL-адрес для загрузки в Amazon S3. Я хотел бы добавить к этому возможность ограничить размер загрузки.Ограничить размер загружаемого файла до S3 с заданным адресом

AmazonS3 s3client = new AmazonS3Client(new ProfileCredentialsProvider(configFileName, profileName)); 
GeneratePresignedUrlRequest generateUploadPresignedUrlRequest = new GeneratePresignedUrlRequest(BUCKETNAME, key); 
generateUploadPresignedUrlRequest.setMethod(HttpMethod.PUT); 
generateUploadPresignedUrlRequest.setExpiration(getFutureDate(2*DAYS)); 
URL uploadURL = s3client.generatePresignedUrl(generateUploadPresignedUrlRequest); 

Я знаю, что мне нужно добавить политику, которая устанавливает «диапазон длины содержимого». Пример: ["content-length-range", 0, 10485760]

Но все мои попытки закодировать это на Java не удались с запретом 403.

EDIT: Я пропустил нерабочий код и добавив это перед generatePresignedUrl, который был моим «исправлением».

Date futureDate = getFutureDate(2*DAYS); 
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); 
String date = df.format(futureDate); 
String policy = "{ \"expiration\": \""+date+"\","+ 
          "\"conditions\": [" + 
           "{\"bucket\": \""+BUCKETNAME+"\" }," + 
           "['content-length-range', 0, 25000]," + 
          "]" + 
        "}"; 
generateUploadPresignedUrlRequest.addRequestParameter("Policy", policy); 

ответ

0

LOL - 5 мин после регистрации я нашел ошибку ...

ОТВЕТ - обратите внимание на "политику" вместо "политики" (капитала P) generateUploadPresignedUrlRequest.addRequestParameter ("Политика", policyStr);

+0

Это просто заставляет его игнорировать вашу политику. Вы могли бы переименовать его в blahblahblah и иметь тот же результат. – neildo

Смежные вопросы