diff --git a/app/controllers/attachments_controller.rb b/app/controllers/attachments_controller.rb index 398b7fcc4..30de26915 100644 --- a/app/controllers/attachments_controller.rb +++ b/app/controllers/attachments_controller.rb @@ -32,26 +32,23 @@ class AttachmentsController < ApplicationController def get_file normal_status(-1, "参数缺失") if params[:download_url].blank? url = base_url.starts_with?("https:") ? params[:download_url].to_s.gsub("http:", "https:") : params[:download_url].to_s - if url.starts_with?(base_url) && !url.starts_with?("#{base_url}/repo") - url = ("/repos"+url.to_s.split(base_url + "/api")[1]) - filepath, ref = url.to_s.split("/")[-1].to_s.split("?") - url.gsub!(url.to_s.split("/")[-1], '') - else - filepath, ref = url.to_s.split("/")[-1].to_s.split("?") - end - Rails.logger.info("url===#{url}") - Rails.logger.info(filepath) md5_file = Base64.strict_encode64(params[:download_url]) FileUtils.mkdir_p("#{Rails.root}#{EduSetting.get("attachment_folder")}gitea/") unless Dir.exists?("#{Rails.root}#{EduSetting.get("attachment_folder")}gitea/") tmp_path = "#{Rails.root}#{EduSetting.get("attachment_folder")}gitea/#{Time.now.strftime('%Y%m%d')}-#{md5_file}" cache_key ="get_file:#{Time.now.strftime('%Y%m%d')}:#{md5_file}" value = Rails.cache.read(cache_key) if value.to_i >= 5 && File.exist?(tmp_path) + filepath, ref = url.split("/")[-1].split("?") send_data(tmp_path, filename: filepath, type: "application/octet-stream", disposition: 'attachment') else if url.starts_with?(base_url) && !url.starts_with?("#{base_url}/repo") domain = GiteaService.gitea_config[:domain] api_url = GiteaService.gitea_config[:base_url] + url = ("/repos"+url.split(base_url + "/api")[1]) + filepath, ref = url.split("/")[-1].split("?") + url.gsub!(url.split("/")[-1], '') + Rails.logger.info("url===#{url}") + Rails.logger.info(filepath) request_url = [domain, api_url, URI.encode(url), URI.escape(filepath), "?ref=#{URI.escape(ref.split('ref=')[1])}&access_token=#{User.where(admin: true).take&.gitea_token}"].join Rails.logger.info("request_url===#{request_url}") response = Faraday.get(request_url)