相关疑难解决方法(0)

如何在 Spring MVC 中处理 IO 流

我有一个返回ResponseEntity(InputStreamResource) 的方法。在此方法中,我根据文件名输入从文件中获取 InputStream,然后将 InputStreamResource 作为响应发送。

代码片段

InputStream inputStream = ...;    
ResponseEntity<InputStreamResource> response = new ResponseEntity<InputStreamResource>(new InputStreamResource(inputStream), headers, HttpStatus.OK);
return response;
Run Code Online (Sandbox Code Playgroud)

这里我需要关闭 inputStream 对象吗?如果我这样做,我会得到

IllegalStateException:已关闭消息。我是否需要明确关闭它们或容器会照顾。

inputstream spring-mvc

8
推荐指数
1
解决办法
2796
查看次数

S3下载pdf - REST API

我正在尝试使用Spring Boot Rest API提供存储在S3上的一个PDF.

以下是我的代码:

        byte[] targetArray = null;

        InputStream is = null;

        S3Object object = s3Client
                    .getObject(new GetObjectRequest("S3_BUCKET_NAME", "prefixUrl"));

        InputStream objectData = object.getObjectContent();

    BufferedReader reader = new BufferedReader(new InputStreamReader(objectData));

    char[] charArray = new char[8 * 1024];
    StringBuilder builder = new StringBuilder();
    int numCharsRead;
    while ((numCharsRead = reader.read(charArray, 0, charArray.length)) != -1) {

        builder.append(charArray, 0, numCharsRead);
    }
    reader.close();

    objectData.close();
    object.close();
    targetArray = builder.toString().getBytes();

    is = new ByteArrayInputStream(targetArray);


    return ResponseEntity.ok().contentLength(targetArray.length).contentType(MediaType.APPLICATION_PDF)
                    .cacheControl(CacheControl.noCache()).header("Content-Disposition", "attachment; filename=" + "testing.pdf")
                    .body(new InputStreamResource(is));
Run Code Online (Sandbox Code Playgroud)

当我使用邮递员点击我的API时,我能够下载PDF文件,但问题是它完全是空白的.可能是什么问题?

S3流数据并不保留缓冲区,数据是二进制(PDF),因此如何使用Rest API将这些数据服务器.

怎么解决这个?

amazon-s3 aws-sdk aws-java-sdk

4
推荐指数
1
解决办法
2559
查看次数