如何通过Restlet提供“流式”文件上传API?

时间:2019-01-25 18:28:38

标签: java restlet tus

我正在尝试在Restlet API中实现可恢复的上传(使用TUS协议https://tus.io/)。 我大部分时间都使用了该协议,但是随后我遇到了一个问题,即Restlet似乎处理文件上传的方式-似乎要等待整个文件上传完成,然后再移交给应有的资源处理呼叫。

这与TUS的预期工作方式不同,在这种情况下,应在上传数据时将上传的数据流式传输/写入目标文件。如果客户端在中间暂停或中止上传,则应将到目前为止已上传的所有数据写入文件,并且所产生的偏移量将允许客户端稍后在该位置恢复上传。

处理PATCH调用的控制器(Restlet资源)的代码非常简单:

@Patch
public void tusPatch(final Representation data) {
   tusService.process(getRequest(), getResponse(), userId);
   // Add some TUS specific headers and we're done.
}

所以问题在于,每当我上传文件时,Restlet(或底层的Jetty服务器?)将首先等待客户端完成整个上传,然后再将结果表示形式传递给控制器​​类和PATCH方法。

本质上,我想要的是上载文件的某种InputStream,可以在文件上传时从中读取。

我不确定100%Restlet是否支持我在这里尝试做的事情,或者我是否只是在错误地使用它,还是Jetty在缓冲不该使用的东西。

>

0 个答案:

没有答案