当前位置: 首页 > 知识库问答 >
问题:

如何使用 Spring Boot 从 S3 下载 json 文件?

全兴运
2023-03-14

我在S3存储桶中有一个包含json文件的文件夹。我正在使用Spring Boot。用户提供文件夹名称和特定文件(json file)名称。

public ResponseEntity<?> downloading(String folderName, String fileName) throws IOException {
    S3Object s3Object = s3client
            .getObject(new GetObjectRequest(s3BucketName, folderName + fileName));
    if (s3Object.getKey().length() > 0) {
      //enables the user to dowload json file
      //return the object that can be dowloaded, status code 
      return new ResponseEntity<>( HttpStatus.OK);
    }
    else{
      //return error message and status code 
      return new ResponseEntity<>( HttpStatus.NOT_FOUND);
    }
   }

共有1个答案

云骏奇
2023-03-14

我从这里参考了答案。

因此,我只添加了一部分代码,可以帮助您:

public ResponseEntity<byte[]> downloading(String folderName, String fileName) {
    S3Object s3Object = s3client
            .getObject(new GetObjectRequest(s3BucketName, folderName + fileName));
    if (s3Object.getKey().length() > 0) {
      S3ObjectInputStream input = s3Object.getObjectContent();
      byte[] bytes = IOUtils.toByteArray(input);
      String file = URLEncoder.encode(s3Object.getKey(), "UTF-8").replaceAll("\\+", "%20");
      HttpHeaders headers = new HttpHeaders();
      headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
      headers.setContentLength(bytes.length);
      headers.setContentDispositionFormData("attachment", file);
      return new ResponseEntity<byte[]>(bytes, HttpStatus.OK);
    } 
    return new ResponseEntity<byte[]>(null, HttpStatus.NOT_FOUND);
}

谢了。:)

 类似资料:
  • 运行上述代码后出现以下错误。请帮忙做这件事。。正在将源和目标文件名作为S3属性中的参数传递。。。 在处理上述异常时,发生了另一个异常: 回溯(最后一次调用):文件“C:\Cloudtail\CT\SQL Scripts\python\GRN\u S3\u dwnld.py”,第17行,除了botocore.exception.ClientErrors as e:NameError:未定义名称“bo

  • 我已使用IAM角色启动了一个ec2实例,并将以下策略与IAM角色关联。 然而,当我试图从ec2-实例中使用aws cli下载文件时,我一直拒绝访问。 当我模拟策略并对bucket中的对象执行操作时,会收到消息“allowed”。当我访问时,我可以看到正确的实例配置文件附在实例上http://169.254.254/latest-metadata/iam/info 我有什么明显的遗漏吗?

  • 根据AWS文档中提供的资源,可以通过以下代码下载对象: 编辑 我将更改为,它打开了pdf,但现在我需要下载它

  • 问题内容: 我在s3中有一个存储桶,它具有深层的目录结构。我希望我可以一次全部下载它们。我的文件如下所示: 有什么方法可以使用python中的boto lib从s3存储桶中递归下载这些文件? 提前致谢。 问题答案: 您可以按以下方式在存储桶中下载所有文件(未经测试): 请记住,S3中的文件夹只是写密钥名的另一种方法,只有客户端会将其显示为文件夹。

  • 问题内容: 如何才能从旧的ASP.NET网站(我相信是IIS6)下载* .json文件? 我正在获取404页面而不是JSON文件。 我需要创建一个web.config文件吗?里面有什么? 问题答案: 将JSON MIME类型添加到IIS6。按照MSDN的“配置MIME类型(IIS 6.0)”中的说明进行操作 。 扩展名: .json MIME类型: application / json 更改后不要

  • 问题内容: 在我的应用程序中,在客户端创建了一个json对象。该对象被发布到HttpServlet,后者基于POST数据创建pdf文件。 该文件将发送回用户。调用成功函数,并记录流数据。但是,我想要下载该文件。 如何实现呢? 我的客户端代码: }); 然后servlet创建文件: 日志中的输出: 我的解决方案:* 有关指针,请参见http://www.particletree.com/notebo