fixed gitea文件下载缓存,更改目录
This commit is contained in:
parent
768b4f1f57
commit
e0b47faec9
|
@ -32,26 +32,23 @@ class AttachmentsController < ApplicationController
|
||||||
def get_file
|
def get_file
|
||||||
normal_status(-1, "参数缺失") if params[:download_url].blank?
|
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
|
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])
|
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/")
|
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}"
|
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}"
|
cache_key ="get_file:#{Time.now.strftime('%Y%m%d')}:#{md5_file}"
|
||||||
value = Rails.cache.read(cache_key)
|
value = Rails.cache.read(cache_key)
|
||||||
if value.to_i >= 5 && File.exist?(tmp_path)
|
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')
|
send_data(tmp_path, filename: filepath, type: "application/octet-stream", disposition: 'attachment')
|
||||||
else
|
else
|
||||||
if url.starts_with?(base_url) && !url.starts_with?("#{base_url}/repo")
|
if url.starts_with?(base_url) && !url.starts_with?("#{base_url}/repo")
|
||||||
domain = GiteaService.gitea_config[:domain]
|
domain = GiteaService.gitea_config[:domain]
|
||||||
api_url = GiteaService.gitea_config[:base_url]
|
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
|
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}")
|
Rails.logger.info("request_url===#{request_url}")
|
||||||
response = Faraday.get(request_url)
|
response = Faraday.get(request_url)
|
||||||
|
|
Loading…
Reference in New Issue