Я пытаюсь загрузить файл в AWS S3 корзину, используя Lambda-сервер без приложения, написанного в Java.
.
И я получаю двоичное содержимое в виде строки в моей конечной точке, как показано ниже (скриншот прилагается).
Я пытаюсь преобразовать эту двоичную строку в байтовый массив и загрузить в корзину S3.
Я получаю ответ об успешном выполнении, но когда я загружаю файл / Изображение это выглядит как не фактический файл.
Пример кода:
@Override
public ServerlessOutput handleRequest(ServerlessInput serverlessInput, Context context) {
ServerlessOutput output = new ServerlessOutput();
String keyName = UUID.randomUUID().toString();
String content = serverlessInput.getBody();
byte[] encoded = this.toBinary(content).getBytes();
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentLength(encoded.length);
metadata.setContentType(PNG_MIME);
s3.putObject(new PutObjectRequest(
ARTICLE_BUCKET_NAME,
keyName,
new ByteArrayInputStream(encoded),
metadata)
);
output.setBody("Successfully inserted article ");
}
private String toBinary(String data) {
byte[] bytes = data.getBytes();
StringBuilder binary = new StringBuilder();
for (byte b : bytes) {
int val = b;
for (int i = 0; i < 8; i++) {
binary.append((val & 128) == 0 ? 0 : 1);
val <<= 1;
}
binary.append(' ');
}
return binary.toString();
}