如何实现Play2 API服务器通过Ajax返回文件
How to implement Play2 API server returning File via Ajax?
我正在使用Scala Play2框架,并尝试将SVG字符串数据转换为其他文件类型,如PDF,PNG,JPEG,并将其作为文件发送到客户端。
我想达到的是
- 客户端发送数据通过Ajax(POST与真正巨大的JSON)
- 服务器从JSON 生成一个文件
- 服务器返回文件给客户端。
但似乎这是几乎不可能发送一个文件,让客户端保存为静态文件,所以我计划在客户端请求上创建新的静态文件,并将其访问url返回到客户端,并通过Javascript打开它。在客户端完成下载后,删除服务器上的文件,在这种方法中,我必须
def generateFile = {
...
...
outputStream.flush() // save the file to a disk
}
和
Ok.sendFile(new File("foo.pdf"))
我需要向存储磁盘写入和读取文件。我认为这不是一个有效的方法。
有更好的方法来实现我想要的吗?
提前感谢。
为什么你认为这不够有效?
我在一个项目中见过类似的方法:
- 使用特殊的命名方案将图像转换并存储在任意tmp目录中
- 一个专用的服务器资源流图像到客户端
- 每5分钟触发一次系统cronjob,从tmp目录 删除超过5分钟的映像。
不同之处在于图像数据(在您的示例中是SVG字符串)不是由客户机发送的,而是存储在数据库中。
如果你的转换库能够在内存中生成图像,也许你可以跳过将图像写入磁盘的步骤。
相关文章:
- 通过ajax将坐标传递到php服务器端,并在处理后检索到javascript
- 使用ajax的服务器端分页&jQuery
- 使用FormData上传AJAX图像;t在服务器端显示图像
- React路由器服务器端渲染和ajax获取数据
- 如何通过ajax将png图片从服务器发送到浏览器中显示
- 使用对服务器的Ajax调用验证表单字段—Learning Ajax
- 使用AJAX将日期从SQL服务器传递到jQuery日历
- 使用AJAX将文件上载到服务器
- 使用ajax上传的文件返回错误,但使用c#在asp.net的服务器端正常提交的文件
- 使用Ajax调用在服务器上实时更新页面
- 如何使用AJAX和php将多个文件上传到服务器
- 如何在服务器仍在处理以前的请求时对ajax请求进行排队
- AJAX错误状态代码500内部服务器错误
- 将服务器端数据传递给JavaScript——Scripplet或AJAX调用——这更好
- Ajax's的数据参数未发送到服务器
- Python本地服务器问题:通过ajax发布时,rfile被截断
- 将两个对象传递给服务器 AJAX
- 如何将文本输入保存为变量,然后提交到服务器(ajax 和 javascript)
- 安全性 - 将数据从第三方发送到我的服务器 Ajax php
- 将 JSON 和 HTTPRequest 发送到服务器 AJAX