应答2-发送文件和其它数据(send_data)

我们已经看了在“控制器”内提交模板(render)和发送字符串(render_to_string)。应答的第三个部分是发送数据(典型地,但不是必须的,是文件的内容)给客户端。

A、send_data 发送包含二进制数据的字符串给客户端。
send_data(data, options...)
发送一个数据流给客户端。典型地浏览器将结合使用内容类型与部署,两者在选项内设
置,来决定这个用数据做什么。
def sales_graph
png_data = Sales.plot_for(Date.today.month)
send_data(png_data, :type => "image/png", :disposition =>
"inline")
end
选项:
1、:filename 字符串, 在保存数据时,建议浏览器使用缺省的文件名。
2、:type 字符串, 内容类型,缺省为application/octet-stream。
3、:disposition 字符串, 建议浏览器应该使用内联的(选项inline)或者是下载的文
件并保存(缺省选项attachment)。

B、send_file 发送文件的内容给客户端。
send_file(path, options...)
发送指定文件给客户端。方法设置Content-Length,Content-Type,Content-
Disposition,和Content-Transfer-Encodeing 头。
选项:
1、:filename 字符串, 当保存文件时,建议浏览器使用缺省文件名。如果没有设置,
缺省是文件名路径。
2、:type 字符串, 内容类型,缺省应用application/octet-stream。
3、:disposition 字符串,建议浏览器应该使用内联的(选项inline)或者是下载的文件
并保存(缺省选项attachment)。
4、:streaming true 或false ,如果是false, 则整个文件被读入服务器内存并发送
给客户端。否则,文件以:buffer_size 块来读并写给客户端。
You can set additional headers for either send_ method using the headers
attribute in the controller.
def send_secret_file
send_file("/files/secret_list")
headers["Content-Description"] = "Top secret"
end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值