繁体   English   中英

Amazon S3在客户端位置下载文件

[英]Amazon S3 download a file at client location

我的应用程序可以从AWS S3存储桶下载文件。 我正在使用以下代码:

public void downloadFileFromS3(String key) throws IOException, InterruptedException{
        LOG.info("Start - downloadFileFromS3 for key: {} and bucket name: {}", key, bucketName);
        initAWS();
        final GetObjectRequest request = new GetObjectRequest(bucketName, key);
        Download download = transferMgr.download(request, new File("D:\\rohit\\"+key));
        download.waitForCompletion();
}

现在,如我们所见,客户端端的文件目标路径被硬编码为D:\\ rohit 但是,在现实世界中的应用程序中,当用户单击“ 下载文件”选项时,文件将直接从客户端的下载文件夹下载。

有人可以帮我提供文件目标路径。 我正在使用Java和Spring Boot

我尝试在网上搜索,并找到了关于权益溢出的各种解决方案。 但是,这些解决方案没有帮助:

使用REST API从Amazon S3下载文件

Javascript从亚马逊S3存储桶下载文件?

将文件下载到客户端系统中的特定位置

浏览器处理下载。 我举一个例子。 当你有说

<!-- Browser will download the file to user configured location instead of opening -->
<a href="http://example.org/mypdf.pdf" download>Download PDF</a>

而不是使用锚标记来下载。 您可以通过以下过程在收到请求时触发下载。

  1. 生成具有内容处置的预签名URL
  2. 重定向到该URL

生成具有内容处置的S3预签名URL。

GeneratePresignedUrlRequest req = new GeneratePresignedUrlRequest(bucketName, key);
ResponseHeaderOverrides overrides = new ResponseHeaderOverrides();
overrides.setContentDisposition("attachment; filename=\"give file name how you want your client to save\"");
req.setResponseHeaders(overrides);
URL url = this.client.generatePresignedUrl(req);

现在,将您的用户重定向到您生成的url ,并让浏览器处理下载。

希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM