diff --git a/app/controllers/attachments_controller.rb b/app/controllers/attachments_controller.rb index bd322d59e..45689728e 100644 --- a/app/controllers/attachments_controller.rb +++ b/app/controllers/attachments_controller.rb @@ -28,52 +28,57 @@ class AttachmentsController < ApplicationController def create # 1. 本地存储 # 2. 上传到云 - upload_file = params["file"] || params["#{params[:file_param_name]}"] # 这里的file_param_name是为了方便其他插件名称 - uid_logger("#########################file_params####{params["#{params[:file_param_name]}"]}") - raise "未上传文件" unless upload_file - - folder = edu_setting('attachment_folder') - raise "存储目录未定义" unless folder.present? - - month_folder = current_month_folder - save_path = File.join(folder, month_folder) - - ext = file_ext(upload_file.original_filename) - - local_path, digest = file_save_to_local(save_path, upload_file.tempfile, ext) - - content_type = upload_file.content_type.presence || 'application/octet-stream' - - # remote_path = file_save_to_ucloud(local_path[folder.size, local_path.size], local_path, content_type) - remote_path = nil # TODO 暂时本地上传,待域名配置后方可上传至云端 - - logger.info "local_path: #{local_path}" - logger.info "remote_path: #{remote_path}" - - - disk_filename = local_path[save_path.size + 1, local_path.size] - #存数据库 - # - @attachment = Attachment.where(disk_filename: disk_filename, - author_id: current_user.id, - cloud_url: remote_path).first - if @attachment.blank? - @attachment = Attachment.new - @attachment.filename = upload_file.original_filename - @attachment.disk_filename = local_path[save_path.size + 1, local_path.size] - @attachment.filesize = upload_file.tempfile.size - @attachment.content_type = content_type - @attachment.digest = digest - @attachment.author_id = current_user.id - @attachment.disk_directory = month_folder - @attachment.cloud_url = remote_path - @attachment.disk_directory = save_path - @attachment.save! - else - logger.info "文件已存在,id = #{@attachment.id}, filename = #{@attachment.filename}" - end + begin + upload_file = params["file"] || params["#{params[:file_param_name]}"] # 这里的file_param_name是为了方便其他插件名称 + uid_logger("#########################file_params####{params["#{params[:file_param_name]}"]}") + raise "未上传文件" unless upload_file + + folder = edu_setting('attachment_folder') + raise "存储目录未定义" unless folder.present? + + month_folder = current_month_folder + save_path = File.join(folder, month_folder) + + ext = file_ext(upload_file.original_filename) + + local_path, digest = file_save_to_local(save_path, upload_file.tempfile, ext) + + content_type = upload_file.content_type.presence || 'application/octet-stream' + + # remote_path = file_save_to_ucloud(local_path[folder.size, local_path.size], local_path, content_type) + remote_path = nil # TODO 暂时本地上传,待域名配置后方可上传至云端 + + logger.info "local_path: #{local_path}" + logger.info "remote_path: #{remote_path}" + + + disk_filename = local_path[save_path.size + 1, local_path.size] + #存数据库 + # + @attachment = Attachment.where(disk_filename: disk_filename, + author_id: current_user.id, + cloud_url: remote_path).first + if @attachment.blank? + @attachment = Attachment.new + @attachment.filename = upload_file.original_filename + @attachment.disk_filename = local_path[save_path.size + 1, local_path.size] + @attachment.filesize = upload_file.tempfile.size + @attachment.content_type = content_type + @attachment.digest = digest + @attachment.author_id = current_user.id + @attachment.disk_directory = month_folder + @attachment.cloud_url = remote_path + @attachment.disk_directory = save_path + @attachment.save! + else + logger.info "文件已存在,id = #{@attachment.id}, filename = #{@attachment.filename}" + end - render_json + render_json + rescue => e + uid_logger_error(e.message) + tip_exception(e.message) + end end def destroy diff --git a/app/controllers/shixuns_controller.rb b/app/controllers/shixuns_controller.rb index 90aab6981..67c3bfbe2 100644 --- a/app/controllers/shixuns_controller.rb +++ b/app/controllers/shixuns_controller.rb @@ -469,37 +469,43 @@ class ShixunsController < ApplicationController # 实训测试集附件 def upload_data_sets - upload_file = params["file"] - raise "未上传文件" unless upload_file - folder = edu_setting('shixun_folder') - raise "存储目录未定义" unless folder.present? - rep_name = @shixun.data_sets.pluck(:filename).include?(upload_file.original_filename) - raise "文件名已经存在\"#{upload_file.original_filename}\", 请删除后再上传" if rep_name - tpm_folder = params[:identifier] # 这个是实训的identifier - save_path = File.join(folder, tpm_folder) - ext = file_ext(upload_file.original_filename) - local_path, digest = file_save_to_local(save_path, upload_file.tempfile, ext) - content_type = upload_file.content_type.presence || 'application/octet-stream' - disk_filename = local_path[save_path.size + 1, local_path.size] - @attachment = Attachment.where(disk_filename: disk_filename, - author_id: current_user.id).first - if @attachment.blank? - @attachment = Attachment.new - @attachment.filename = upload_file.original_filename - @attachment.disk_filename = local_path[save_path.size + 1, local_path.size] - @attachment.filesize = upload_file.tempfile.size - @attachment.content_type = content_type - @attachment.digest = digest - @attachment.author_id = current_user.id - @attachment.disk_directory = tpm_folder - @attachment.container_id = @shixun.id - @attachment.container_type = @shixun.class.name - @attachment.attachtype = 2 - @attachment.save! - else - logger.info "文件已存在,id = #{@attachment.id}, filename = #{@attachment.filename}" + begin + + upload_file = params["file"] + raise "未上传文件" unless upload_file + folder = edu_setting('shixun_folder') + raise "存储目录未定义" unless folder.present? + rep_name = @shixun.data_sets.pluck(:filename).include?(upload_file.original_filename) + raise "文件名已经存在\"#{upload_file.original_filename}\", 请删除后再上传" if rep_name + tpm_folder = params[:identifier] # 这个是实训的identifier + save_path = File.join(folder, tpm_folder) + ext = file_ext(upload_file.original_filename) + local_path, digest = file_save_to_local(save_path, upload_file.tempfile, ext) + content_type = upload_file.content_type.presence || 'application/octet-stream' + disk_filename = local_path[save_path.size + 1, local_path.size] + @attachment = Attachment.where(disk_filename: disk_filename, + author_id: current_user.id).first + if @attachment.blank? + @attachment = Attachment.new + @attachment.filename = upload_file.original_filename + @attachment.disk_filename = local_path[save_path.size + 1, local_path.size] + @attachment.filesize = upload_file.tempfile.size + @attachment.content_type = content_type + @attachment.digest = digest + @attachment.author_id = current_user.id + @attachment.disk_directory = tpm_folder + @attachment.container_id = @shixun.id + @attachment.container_type = @shixun.class.name + @attachment.attachtype = 2 + @attachment.save! + else + logger.info "文件已存在,id = #{@attachment.id}, filename = #{@attachment.filename}" + end + render_ok + rescue => e + uid_logger_error(e.message) + tip_exception(e.message) end - render_ok end # 多文件删除 diff --git a/public/react/src/modules/tpm/TPMDataset.js b/public/react/src/modules/tpm/TPMDataset.js index 5745a6321..619dea9e1 100644 --- a/public/react/src/modules/tpm/TPMDataset.js +++ b/public/react/src/modules/tpm/TPMDataset.js @@ -84,6 +84,7 @@ class TPMDataset extends Component { loadingstate:false, checked: false, showmodel:false, + itemtypebool:false, } } @@ -304,10 +305,18 @@ class TPMDataset extends Component { if(info.file.response){ if(info.file.response.status===-1||info.file.response.status==="-1"){ // console.log("准备显示弹框了"); - // console.log(info); + // console.log(info);false + let itemtype=-1; + try { + itemtype=info.file.response.message.indexOf('文件名已经存在'.toLowerCase()); + + }catch (e) { + + } this.setState({ showmodel:true, tittest:info.file.response.message, + itemtypebool:itemtype>-1?true:itemtype<=-1?false:false, }) } } @@ -466,7 +475,7 @@ class TPMDataset extends Component {
加载实训出错,是否
this.updatamakedowns()}>重新加载
+加载实训失败,
this.updatamakedowns()}>重新加载
文件名重复
文件名重复
{this.props.tittest}