我正在开发一个Play 2 webapp,我让客户端使用play.api.libs.iteratee._
和自定义BodyParser
上传任意大文件并使服务器按块进行操作,甚至在上传完成之前第
我想要做的是让服务器在上传时“中断”或“中止”上传,这样浏览器就不会传输整个文件。
我最初认为将BodyParser
的{{1}}置于Iteratee
状态可以解决这个问题,但是当我这样做时,上传仍在继续,这些块就被丢弃了。在参与该过程的Error
中抛出异常也不会停止上传。
我能想到应该工作的唯一解决方案是通过Ajax上传文件并与客户端的浏览器打开单独的连接(例如WebSocket)。当服务器决定终止文件上传时,它会将特殊命令推送到浏览器,客户端javascript将abort the upload。
我的问题是有没有一种方法可以直接从Play应用程序终止上传,而无需将其委托给浏览器的javascript?