使用Spreadsheet gem创建的文件标记为病毒

时间:2015-12-22 08:42:05

标签: ruby-on-rails ruby excel rubygems

我一直在使用Spreadsheet gem来创建xls文件,并在我的应用程序中使用rubyzip gem将它们压缩下载。

以下是生成xls文件的lib类的代码片段

     excel_file = Spreadsheet::Workbook.new 
     sheet1 = excel_file.create_worksheet :name => 'Attendance'
     .#code
     .#code for xls
     .#code
     excel_file.write("/home/Code/attn/files/excel/TEST-#{@name}-#{t}.xls")

我在控制器中压缩文件

     files = Dir.glob("#{Rails.root}/files/excel/*.xls")
     @original_file = File.basename(files.first)
     @original_path = "#{Rails.root}/files/excel"

     Zip:: File.open(@filename, Zip::File::CREATE) do |z|
    z.add(@original_file,@original_path+'/'+@original_file)
    z.get_output_stream("Other details.txt") { |os| os.write "This is a system generated excel sheet" }
  end
send_file @filename, :type => 'application/zip', :filename => "Attendance-#{city}-#{t}.zip", :stream=> false, :x_sendfile=>true

当我使用Ubuntu桌面下载zip文件并使用LibreOffice读取xls文件时,此方法非常有效。正确提取zip没有任何问题,并且读取xls表而没有任何损坏警告。

但是当我使用Windows 7下载相同的zip文件并使用文件浏览器解压缩时,使用MS Excel打开xls文件"错误0x80070057:参数不正确" 弹出错误。

此外,当通过gmail或hotmail上传xls表时,它被标记为病毒。

注意: - 仅适用于Spreadsheet gem创建的大小超过140kB的xls文件

生产和本地环境生成的文件都存在此问题。

环境: -

生产

Ubuntu 14.04 server
rvm 1.26.11
Ruby 2.2.2

开发

Ubuntu 14.04
rvm 1.26.11
Ruby 2.1.6

使用的Gems版本: -

生产

rubyzip (1.1.7)
spreadsheet (1.0.7)
rubygems-bundler (1.4.4)
ruby-ole (1.2.11.8)

开发

rubyzip (1.1.7)
spreadsheet (1.0.7)
rubygems-update (2.4.8)
ruby-ole (1.2.11.8)

生成的xls文件的mime类型是

应用/ CDFV2-腐败;字符集=二进制

0 个答案:

没有答案