gpt4 book ai didi

Ruby 压缩流

转载 作者:数据小太阳 更新时间:2023-10-29 07:00:44 24 4
gpt4 key购买 nike

我正在尝试编写一个 ruby​​ fcgi 脚本,它可以动态压缩目录中的文件,并将输出作为 http 响应逐 block 发送。将此压缩作为流操作完成非常重要,否则客户端将因目录过大而超时。

我有以下代码:

d="/tmp/delivery/"

# send zip header
header(MimeTypes::ZIP)

# pseudocode from here on
IO.open(d) { |fh|
block=fh.readblock(1024)
#send zipped block as http response
print zip_it(block)
}

如何实现我在上面的 list 中编写的伪 ruby ?

最佳答案

Tokland 使用外部 zip 命令的想法非常有效。下面是一个简短的代码片段,可以在 Linux 或类似环境中与 Ruby 1.9 一起使用。它使用 popen() 的数组参数来避免任何 shell 引用问题,并使用 sysread/syswrite 来避免缓冲。如果你愿意,你可以在空的 rescue block 中显示状态消息——或者你可以使用 readwrite,虽然我没有测试了那些。

#! usr/bin/env ruby
d = '/tmp/delivery'
output = $stdout
IO.popen(['/usr/bin/zip', '-', d]) do |zip_output|
begin
while buf = zip_output.sysread(1024)
output.syswrite(buf)
end
rescue EOFError
end
end

关于Ruby 压缩流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6700252/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com