首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何通过Ajax实现Play2 API服务器返回文件?

如何通过Ajax实现Play2 API服务器返回文件?
EN

Stack Overflow用户
提问于 2015-08-20 19:08:39
回答 1查看 73关注 0票数 2

我正在使用Scala Play2框架,并试图将SVG字符串数据转换为其他文件类型,如PDF、PNG、JPEG,并将其作为文件发送到客户端。

我想要实现的是

  1. 客户端通过Ajax发送数据(POST带有非常巨大的JSON)
  2. 服务器从JSON生成一个文件
  3. 服务器将文件返回给客户端。

但是,似乎发送一个文件并让客户端将其保存为静态文件是不可能的,因此我计划在客户端请求新的静态文件,并将其访问url返回给客户端,并通过Javascript打开它。在客户端完成下载后,删除服务器中的文件,但在这种方法中,我必须

代码语言:javascript
运行
AI代码解释
复制
def generateFile = {
 ...
 ...
 outputStream.flush() // save the file to a disk
}

代码语言:javascript
运行
AI代码解释
复制
Ok.sendFile(new File("foo.pdf"))

我需要将文件读写到存储磁盘上。我不认为这是一个有效的方法。

有什么更好的方法来实现我想要的吗?

提前谢谢你。

EN

回答 1

Stack Overflow用户

发布于 2015-08-21 04:41:44

你为什么认为这不够有效?

我在一个项目中看到了类似的方法:

  • 使用特殊的命名方案将图像转换并存储在任意tmp目录中。
  • 专用服务器资源将映像流到客户端。
  • 每5分钟触发一次系统cronjob,从tmp目录删除5分钟以上的图像。

区别在于图像数据(在您的例子中是SVG字符串)不是由客户端发送的,而是存储在数据库中的。

也许您可以跳过将映像写入磁盘的步骤,如果转换库能够在内存中生成图像的话。

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

https://stackoverflow.com/questions/32131748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文