作业附件乱码优化

dev_zanle
guange 10 years ago
parent 1724ae430e
commit 22d8fc9abd

@ -1,4 +1,8 @@
require 'zip' #coding=utf-8
require "base64"
require 'zip'
class ZipdownController < ApplicationController class ZipdownController < ApplicationController
#查找项目(课程) #查找项目(课程)
before_filter :find_project_by_bid_id, :only => [:assort] before_filter :find_project_by_bid_id, :only => [:assort]
@ -11,7 +15,12 @@ class ZipdownController < ApplicationController
def download def download
if User.current.logged? if User.current.logged?
begin begin
send_file "#{OUTPUT_FOLDER}/#{params[:file]}", :filename => filename_for_content_disposition(params[:filename]), :type => detect_content_type(params[:file]) if params[:base64file]
file = Base64.decode64(params[:base64file])
send_file "#{OUTPUT_FOLDER}/#{file}", :filename => filename_for_content_disposition(file), :type => detect_content_type(file)
else
send_file "#{OUTPUT_FOLDER}/#{params[:file]}", :filename => filename_for_content_disposition(params[:filename]), :type => detect_content_type(params[:file])
end
rescue => e rescue => e
render file: 'public/no_file_found.html' render file: 'public/no_file_found.html'
end end
@ -107,7 +116,9 @@ class ZipdownController < ApplicationController
bid_homework_path, OUTPUT_FOLDER) bid_homework_path, OUTPUT_FOLDER)
} }
[{files:[out_file.file_path], count: 1, index: 1, [{files:[out_file.file_path], count: 1, index: 1,
real_file: out_file.file_path, file: File.basename(out_file.file_path), real_file: out_file.file_path,
file: File.basename(out_file.file_path),
base64file: Base64.encode64(File.basename(out_file.file_path)),
size:(out_file.pack_size / 1024.0 / 1024.0).round(2) size:(out_file.pack_size / 1024.0 / 1024.0).round(2)
}] }]
end end
@ -129,7 +140,9 @@ class ZipdownController < ApplicationController
bid_homework_path, OUTPUT_FOLDER) bid_homework_path, OUTPUT_FOLDER)
} }
[{files:[out_file.file_path], count: 1, index: 1, [{files:[out_file.file_path], count: 1, index: 1,
real_file: out_file.file_path, file: File.basename(out_file.file_path), real_file: out_file.file_path,
file: File.basename(out_file.file_path),
base64file: Base64.encode64(File.basename(out_file.file_path)),
size:(out_file.pack_size / 1024.0 / 1024.0).round(2) size:(out_file.pack_size / 1024.0 / 1024.0).round(2)
}] }]
end end

@ -870,7 +870,10 @@ function redo() {
window.location.reload() window.location.reload()
} }
function encodeHomeworkUrl(url){ function encodeHomeworkUrl(url, is_base64){
if(typeof is_base64 === 'boolean' && is_base64){
return '/zipdown/download?base64file='+url;
}
var file = encodeURI(url).replace(/\+/g, '%2B'); var file = encodeURI(url).replace(/\+/g, '%2B');
return '/zipdown/download?file='+file; return '/zipdown/download?file='+file;
} }
@ -891,7 +894,10 @@ $(function(){
} }
if(res.length==1){ if(res.length==1){
location.href = encodeHomeworkUrl(res[0].file);return; if(res[0].base64file){
location.href = encodeHomeworkUrl(res[0].base64file, true);return;
}
location.href = encodeHomeworkUrl(res[0].file);return;
} }
document.getElementById('light').style.display='block'; document.getElementById('light').style.display='block';
@ -904,8 +910,12 @@ $(function(){
} else { } else {
des = '第'+res[i].index+'个学生的作品下载'; des = '第'+res[i].index+'个学生的作品下载';
} }
$('<li><span class="upload_box_span" >'+(i+1)+'.</span> <a href="'+ encodeHomeworkUrl(res[i].file) +'">'+des+'</a><span class="c_grey">&nbsp;&nbsp;(共'+res[i].size+'M</span> </li>').appendTo($container);
if(res[i].base64file){
$('<li><span class="upload_box_span" >'+(i+1)+'.</span> <a href="'+ encodeHomeworkUrl(res[i].base64file, true) +'">'+des+'</a><span class="c_grey">&nbsp;&nbsp;(共'+res[i].size+'M</span> </li>').appendTo($container);
} else {
$('<li><span class="upload_box_span" >'+(i+1)+'.</span> <a href="'+ encodeHomeworkUrl(res[i].file) +'">'+des+'</a><span class="c_grey">&nbsp;&nbsp;(共'+res[i].size+'M</span> </li>').appendTo($container);
}
} }
} }
}); });
@ -973,3 +983,14 @@ function showNormalImage(id) {
} }
} }
$(function(){
//at 加链接
$("span.at").hover(function(){
$(this).css('cursor', 'pointer');
});
$("span.at").live('click', function(){
var userId = $(this).attr('data-user-id');
$(window.location).attr('href', '/users/'+userId);
});
});
Loading…
Cancel
Save