转换变为既时转换

This commit is contained in:
guange 2015-06-04 10:24:05 +08:00
parent d3baada893
commit 444658d0b3
4 changed files with 41 additions and 25 deletions

View File

@ -66,6 +66,12 @@ class AttachmentsController < ApplicationController
file.downcase.end_with?(".pdf")
end
def direct_download
send_file @attachment.diskfile, :filename => filename_for_content_disposition(@attachment.filename),
:type => detect_content_type(@attachment),
:disposition => 'attachment' #inline can open in browser
end
def download
# modify by nwb
# 下载添加权限设置
@ -73,16 +79,23 @@ class AttachmentsController < ApplicationController
if candown || User.current.admin? || User.current.id == @attachment.author_id
@attachment.increment_download
if stale?(:etag => @attachment.digest)
if params[:force] == 'true'
direct_download
else
convered_file = @attachment.diskfile
#如果本身不是pdf文件则先寻找是不是已转换化如果没有则转化
unless pdf?(convered_file)
convered_file = File.join(Rails.root, "files", "convered_office", @attachment.disk_filename + ".pdf")
unless File.exist?(convered_file)
office = Trustie::Utils::Office.new(@attachment.diskfile)
office.conver(convered_file)
end
end
if File.exist?(convered_file) && pdf?(convered_file)
send_file convered_file, :type => 'application/pdf; charset=utf-8', :disposition => 'inline'
else
send_file @attachment.diskfile, :filename => filename_for_content_disposition(@attachment.filename),
:type => detect_content_type(@attachment),
:disposition => 'attachment' #inline can open in browser
direct_download
end
end
end
else

View File

@ -259,13 +259,14 @@ class Attachment < ActiveRecord::Base
end
def office_conver
return unless %w(Project Course).include? (self.container_type)
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 + ".pdf")
OfficeConverTask.new.conver(self.diskfile, convered_file)
# 不在这里做后台转换,换为点击时做转换
# return unless %w(Project Course).include? (self.container_type)
# 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 + ".pdf")
# OfficeConverTask.new.conver(self.diskfile, convered_file)
end
# Copies the temporary file to its final location

View File

@ -30,6 +30,7 @@
<% else %>
<%= link_to(l(:label_slected_to_project),quote_resource_show_project_project_file_path(project,file),:class => "f_l re_select",:remote => true) if has_project?(User.current,file) %>
<% end %>
<%= link_to '下载',download_named_attachment_path(file.id, file.filename, force: true),class: 'f_l re_open' %>
<% end %>
</div>
<div class="cl"></div>

View File

@ -17,12 +17,13 @@ module Trustie
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')
# resource = RestClient::Resource.new(
# 'http://192.168.80.107/Any2HtmlHandler.ashx',
# :timeout => -1,
# :open_timeout => -1
# )
# req = resource.post :txtDes => File.new(@file, 'rb')
req = RestClient.post 'http://192.168.80.107/Any2HtmlHandler.ashx',:txtDes => File.new(@file, 'rb')
File.delete(saved_file) if File.exist?(saved_file)
if req.body.length > 10 && !req.body.eql?('转换出错')
File.open(saved_file, "wb+") do |f|