Используя приведенный ниже код, я могу подписать 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);
Это просто заставляет его игнорировать вашу политику. Вы могли бы переименовать его в blahblahblah и иметь тот же результат. – neildo