java - 如何使用 Spring Boot 从 S3 下载 json 文件?
问题描述
我在 S3 存储桶中有一个包含 json 文件的文件夹。我正在使用 Spring Boot。用户提供folder name
特定的文件(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);
}
}
解决方案
我已经从这里提到了答案。
所以,我只添加了一部分代码来帮助你:
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);
}
谢谢。:)
推荐阅读
- project-server - 使用 Rest API 进入 Project Server 的时间表条目
- reactjs - 将表单数据保存为用户类型(React/Postgres)
- android - 应用关闭时的AlarmManager完成服务(LocationManager)
- ms-access - 从另一个表单打开表单到特定记录 Access VBA 2016
- spring - spring boot unsatisfied dependency 通过字段 customerDetailsSerice 嵌套异常表示
- azure - 如何使用 ARM 模板创建包含多个私有 IP 地址的 ipConfiguration 的 Azure VM
- macos - 在 macOS 上让 OpenGL 与 Core Animation 共存
- ios - Opencv iOS 类型
- django - 如何在不区分大小写的情况下执行 model.objects.get(**kwargs)
- python - PyTorch:有没有办法将模型存储在 CPU 内存中,但在 GPU 上运行大型模型的所有操作?