Merge branch 'guange_dev' into szzh

This commit is contained in:
sw 2015-06-03 11:13:34 +08:00
commit c26a375e2b
4 changed files with 76 additions and 17 deletions

View File

@ -72,7 +72,7 @@ class Attachment < ActiveRecord::Base
@@thumbnails_storage_path = File.join(Rails.root, "tmp", "thumbnails")
before_save :files_to_final_location
after_create :be_user_score ,:act_as_forge_activity# user_score
after_create :office_conver, :be_user_score ,:act_as_forge_activity# user_score
after_update :be_user_score
after_destroy :delete_from_disk,:down_user_score
@ -258,6 +258,15 @@ class Attachment < ActiveRecord::Base
filename
end
def office_conver
saved_path = File.join(Rails.root, "files", "convered_office")
unless Dir.exist?(saved_path)
Dir.mkdir(saved_path)
end
convered_file = File.join(saved_path, self.disk_filename + ".html")
OfficeConverTask.new.conver(self.diskfile, convered_file)
end
# Copies the temporary file to its final location
# and computes its MD5 hash
def files_to_final_location

View File

@ -0,0 +1,12 @@
#coding=utf-8
#
class OfficeConverTask
def conver(source_file, saved_file)
office = Trustie::Utils::Office.new(source_file)
if office.conver(saved_file)
Rails.logger.info "process ok: #{saved_file} "
end
end
handle_asynchronously :conver,:queue => 'office_conver'
end

View File

@ -1,23 +1,19 @@
namespace :office do
desc "conver any files to html"
task :conver => :environment do
all_count = Attachment.count
i = 0
Attachment.find_each do |a|
convered_file = File.join(Rails.root, "files", "convered_office", a.disk_filename + ".html")
unless File.exist?(convered_file)
if File.exist? a.diskfile
if %w(doc docx ppt pptx xls xlsx pdf).any?{|word| a.diskfile.downcase.end_with?(word)}
begin
req = RestClient.post 'http://192.168.80.107/Any2HtmlHandler.ashx', :txtDes => File.new(a.diskfile, 'rb')
File.new(convered_file, "ab+") do |f|
f.write(req.body)
end
rescue =>e
puts e.message
end
end
else
puts "can't find file #{a.diskfile}"
end
i += 1
puts "process [#{i}/#{all_count}] => id #{a.id}"
saved_path = File.join(Rails.root, "files", "convered_office")
unless Dir.exist?(saved_path)
Dir.mkdir(saved_path)
end
convered_file = File.join(saved_path, a.disk_filename + ".html")
office = Trustie::Utils::Office.new(a.diskfile)
if office.conver(convered_file)
puts "process ok: #{convered_file} "
end
end
end

View File

@ -0,0 +1,42 @@
module Trustie
module Utils
class Office
def initialize(file)
@file = file
end
def office?
%w(doc docx ppt pptx xls xlsx pdf).any?{|word| @file.downcase.end_with?(word)}
end
def conver(saved_file, force=false)
if force || !File.exist?(saved_file)
if File.exist? @file
if office?
begin
resource = RestClient::Resource.new(
'http://192.168.80.107/Any2HtmlHandler.ashx',
:timeout => -1,
:open_timeout => -1
)
req = resource.post :txtDes => File.new(@file, 'rb')
File.new(saved_file, "ab+") do |f|
f.write(req.body)
end
return true
rescue =>e
puts e.message
end
end
else
puts "can't find file #{@file}"
end
end
false
end
end
end
end