[英]How can I upload a file to S3 using a presigned URL without loading it into memory
我正在使用預先簽名的 AWS S3 url 從使用 Java 的內存有限的設備上傳文件。 但是,我偶爾有需要上傳的大文件。 問題是將這些文件加載到內存中會導致內存不足異常。
我發現可以將文件直接流式傳輸到 S3(例如https://www.example-code.com/java/s3_file_stream_upload.asp ),但我找不到有關如何使用的任何信息一個預先簽名的網址。
有沒有辦法使用預簽名的 url 將大文件(5GB 以下)上傳到 S3,而無需先將文件加載到內存中?
這可以使用 Multipart 來實現。 您不需要將文件本地存儲在您的服務器上,這將避免Mermory Exception。 下面的代碼是在 Java
public boolean uploadFileDirectlyToS3(MultipartFile multipartFile, String keyName) {
ObjectMetadata data = new ObjectMetadata();
try {
data.setContentType(multipartFile.getContentType());
data.setContentLength(multipartFile.getSize());
s3Client.putObject(CORE_BUNDLE.getString("bucket.name"), keyName, multipartFile.getInputStream(), data);
//KeyName is the specific and unique path where you wanna place your file in s3
return true;
} catch (Exception e) {
logger.error("Error occured while uploading file to s3 having name: "+multipartFile.getOriginalFilename(), e);
return false;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.