Les*_*iev 2 activerecord ruby-on-rails ruby-on-rails-3
我正在使用MSSQL 2005.
我有StringIO对象,其中包含我的zip文件内容.
以下是我获取zip二进制数据的方法:
stringio = Zip::ZipOutputStream::write_buffer do |zio|
Eclaim.find_by_sql("SET TEXTSIZE 67108864")
zio.put_next_entry("application.xml")
#zio.write @claim_db[:xml]
biblio = Nokogiri::XML('<?xml version="1.0" encoding="utf-8"?>' + @claim_db[:xml], &:noblanks)
zio.write biblio.to_xml
builder = Nokogiri::XML::Builder.new(:encoding => 'utf-8') do |xml|
xml.documents {
docs.where("ext not in (#{PROHIBITED_EXTS.collect{|v| "'#{v}'"}.join(', ')})").each{|doc|
zio.put_next_entry("#{doc[:materialtitle_id]}.#{doc[:ext]}")
zio.write doc[:efile]
xml.document(:id => doc[:materialtitle_id]) {
xml.title doc[:title]
xml.code doc[:code]
xml.filename "#{doc[:materialtitle_id]}.#{doc[:ext]}"
xml.extname doc[:ext]
}
}
}
end
zio.put_next_entry("docs.xml")
zio.write builder.to_xml
end
stringio
Run Code Online (Sandbox Code Playgroud)
在我的控制器中我尝试:
data.rewind
@claim.docs.create(
:title => 'Some file',
:ext => 'zip',
:size => data.length,
:receive_date => Time.now,
:efile => data.sysread
)
Run Code Online (Sandbox Code Playgroud)
但是Rails 在UTF-8中抱怨无效的字节序列
帮帮我吧.
如果流配置为UTF-8流,则无法写入压缩二进制文件(可能包含任何值).
我认为,data在写之前设置为二进制流:
data.force_encoding "ASCII-8BIT"
Run Code Online (Sandbox Code Playgroud)
可能有帮助.
| 归档时间: |
|
| 查看次数: |
3194 次 |
| 最近记录: |