diff --git a/app/services/trace/pdf_report_service.rb b/app/services/trace/pdf_report_service.rb index aa731273..7f994762 100644 --- a/app/services/trace/pdf_report_service.rb +++ b/app/services/trace/pdf_report_service.rb @@ -1,6 +1,7 @@ # 代码溯源 导出pdf require 'open-uri' require 'fileutils' +require 'zip' class Trace::PdfReportService < Trace::ClientService @@ -15,8 +16,16 @@ class Trace::PdfReportService < Trace::ClientService content = open("#{domain}#{base_url}#{url}?task_id=#{task_id}", "Authorization" => token) if content.is_a?(Tempfile) check_file_path - IO.copy_stream(content, "#{save_path}/#{task_id}.pdf") - return {code: 200, download_url: "/trace_task_results/#{task_id}.pdf"} + IO.copy_stream(content, "#{save_path}/report.zip") + Zip::File.open("#{save_path}/report.zip") do |zip_file| + zip_file.each do |f| + name = f.name.force_encoding('utf-8') + next unless name == '/report.pdf' + fpath = File.join(save_path, name) + zip_file.extract(f, fpath) + end + end + return {code: 200, download_url: "/trace_task_results/#{task_id}/report.pdf"} else return {code: 404} end @@ -28,7 +37,7 @@ class Trace::PdfReportService < Trace::ClientService end def save_path - "public/trace_task_results" + "public/trace_task_results/#{task_id}" end def url diff --git a/config/application.rb b/config/application.rb index 90a4dcdc..c36279e3 100644 --- a/config/application.rb +++ b/config/application.rb @@ -43,7 +43,7 @@ module Gitlink # origins '*' origins /http:\/\/localhost(:\d+)?\z/, /^(http|https):\/\/(.*(gitlink.org.cn))$/, /^(http|https):\/\/(.*(trustie.net))$/ # location of your api - resource '/*', :headers => :any, :methods => [:get, :post, :delete, :options, :put], credentials: true + resource '/*', :headers => :any, :methods => [:get, :post, :delete, :options, :put, :patch], credentials: true end end end