我想实现一个Liferay Portlet,它从一个单独的服务器下载一个~1GB的文件,并将其提供给点击链接的网站访问者。
文件必须以内存高效的方式传输(因此无需将所有内容加载到内存中),用户应在单击后不久看到下载进度(因此无需将所有内容存储到本地磁盘)。
我必须使用WebClient,因为它似乎是Liferay 7中进行Web请求的标准(将不建议使用RestTem板)。
我开始写这样的东西,灵感来自javadoc的一个例子:
Mono<DataBuffer> bodyMono = client.get()
.uri("https://theotherserver.com/file94875.pdf")
.retrieve()
.bodyToMono(DataBuffer.class);
...我将通过PortletResourceUtil.sendFile将其输入portlet的MVCResourceCommand.serveResources()
,它需要一个java.io.InputStream
。
不幸的是,WebClient给了我一个Mono
实现这一点的最有效和最了解WebClient的方法是什么?
对于Liferay,文档中指出,您可以使用。。。。getPortletOutputStream()检索OutputStream。在设置contentlengh(以便浏览器知道期望值)后,可以使用以下方法:将对OutputStream的写入转换为流量
将数据写入OutputStream
问题内容: 我正在使用selenium脚本,在其中尝试下载Excel文件并为其指定特定名称。这是我的代码: 无论如何,我可以给下载的文件指定一个特定的名称吗? 码: 问题答案: 您不能通过硒指定下载文件的名称。但是,您可以下载文件,在下载的文件夹中找到最新文件,然后根据需要重命名。 注意:从Google搜索中借用的方法可能有错误。但是你明白了。
问题内容: 我希望站点上的用户能够下载路径被遮盖的文件,以便不能直接下载它们。 例如,我希望URL如下所示: http://example.com/download/?f=somefile.txt 在服务器上,我知道所有可下载文件都位于文件夹中。 有没有一种方法可以使Django提供该文件供下载,而不是尝试查找URL和查看以显示它? 问题答案: 对于“两全其美”,你可以将S.Lott的解决方案与x
问题内容: 我希望站点上的用户能够下载路径被遮盖的文件,以便不能直接下载它们。 例如,我希望URL如下所示: http://example.com/download/?f=somefile.txt 在服务器上,我知道所有可下载文件都位于文件夹中。 有没有一种方法可以使Django提供该文件供下载,而不是尝试查找URL和查看以显示它? 问题答案: 你可以将的解决方案与模块结合使用:生成文件(或文件本
我正在使用一个selenium脚本,试图下载一个Excel文件并给它一个特定的名称。这是我的代码: 我可以给正在下载的文件一个特定的名称吗? 代码:
我正在使用aws无服务器java容器将Jersey服务包装到aws Lambda中。我决定使用函数别名进行“测试”和“生产”阶段,最终指向lambda函数的不同版本。 我需要在中选择一些属性。基于该别名的属性文件,基本上是因为我需要与“test”或“prod”DB对话,或者使用不同的endpoint来调用外部web服务。 为此,我需要调用Context对象的方法getInvokedFunction
我正在尝试使用WebClient从外部服务下载文件并将其返回到客户端。在Rest控制器中,我有以下endpoint: 当我尝试击中endpoint时,我得到以下错误: 我已尝试返回