通常使用Play框架,当您上传文件时,它显示为控制器的File对象,文件本身存储在tmp文件夹中。在GAE中这不起作用,因为GAE不允许写入文件系统。
如何上传文件并直接在控制器中访问流?
答案 0 :(得分:3)
所以我想出了解决方案。在控制器中,您只需传入一个byte [],而不是传入File对象,并使用ByeArrayInputStream将其转换为更有用的形式。在我的情况下,我需要将文件数据传递给一个带有InputStream的csv解析器。
答案 1 :(得分:0)
我不熟悉播放框架,但一般来说,对于多部分请求(例如文件上传),
对于apache commons上传,您可以使用DiskFileItemFactory设置大小阈值,然后框架决定是将文件写入磁盘还是将其保留在内存中。如果保留在内存中,框架会将数据复制到DataOutputStream(这是透明地完成的,因此您的servlet仍将使用File对象,而无需知道文件是在磁盘上还是在内存中)。
也许播放框架有类似的配置。