首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >下载文件并提供服务(Spring WebClient -> Liferay Porlet.serveResource)

下载文件并提供服务(Spring WebClient -> Liferay Porlet.serveResource)
EN

Stack Overflow用户
提问于 2019-02-12 10:30:02
回答 1查看 1.4K关注 0票数 0

我想实现一个Liferay,它从一个单独的服务器下载一个~1GB文件,并将它提供给点击该链接的网站访问者。

该文件必须以memory-efficient方式流(因此不会将所有内容加载到内存中),用户在单击后不久就会看到下载的进度(因此不会将所有内容存储到本地磁盘上)。

我必须使用WebClient,因为它似乎是在Liferay 7 (RestTemplate将是已弃用)中提出web请求的标准。

我开始写这样的东西,灵感来自于javadoc的一个例子

代码语言:javascript
复制
Mono<DataBuffer> bodyMono = client.get()
 .uri("https://theotherserver.com/file94875.pdf")
 .retrieve()
 .bodyToMono(DataBuffer.class);

..。我将通过PortletResponseUtil.sendFile将其输入到portlet的MVCResourceCommand.serveResource()中,后者需要一个java.io.InputStream

不幸的是,WebClient给了我一个Mono<DataBuffer> (或Flux<DataBuffer>),另一个答案是https://stackoverflow.com/a/48055611/226958

实现这一点的最有效和最了解WebClient的方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2019-02-12 12:57:53

对于Liferay,文档声明您可以使用....getPortletOutputStream()检索OutputStream。在设置contentlengh (所以浏览器知道期望有多大)之后,您可以使用以下命令:可供ServerResponse使用

将数据写入OutputStream

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54647990

复制
相关文章

相似问题

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