首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用预先签名的URL将文件上传到S3,而无需将其加载到内存中

如何使用预先签名的URL将文件上传到S3,而无需将其加载到内存中
EN

Stack Overflow用户
提问于 2019-05-31 08:23:47
回答 1查看 377关注 0票数 0

我正在使用预先签名的亚马逊网络服务S3 urls从一个内存有限的设备上传文件。但是,我偶尔会有需要上传的大文件。问题是将这些文件加载到内存中会导致内存不足异常。

我发现可以直接将文件流式传输到S3 (例如,https://www.example-code.com/java/s3_file_stream_upload.asp ),但我找不到任何有关如何使用预签名url实现此目的的信息。

有没有一种方法可以使用预先签名的urls将大文件(5 5GB以下)上传到S3,而不需要先将文件加载到内存中?

EN

回答 1

Stack Overflow用户

发布于 2020-01-23 01:51:46

这可以使用Multipart来实现。你不需要把文件存储在你的本地服务器上,这样可以避免内存异常。

代码语言:javascript
运行
复制
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;
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56387203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档