From 75e9d38bea6d1129109eb8872f611371866e658f Mon Sep 17 00:00:00 2001 From: Bohung Date: Wed, 16 Jun 2021 11:52:20 +0800 Subject: [PATCH] Fix bug for IE drag upload file. --- .../admin/archive_files_controller.rb | 12 +++ app/views/admin/archive_files/_form.html.erb | 88 ++++++++++++++++++- 2 files changed, 97 insertions(+), 3 deletions(-) diff --git a/app/controllers/admin/archive_files_controller.rb b/app/controllers/admin/archive_files_controller.rb index 6282676..c6789cf 100644 --- a/app/controllers/admin/archive_files_controller.rb +++ b/app/controllers/admin/archive_files_controller.rb @@ -1,4 +1,5 @@ class Admin::ArchiveFilesController < OrbitAdminController + require 'action_dispatch/http/upload' def show module_pages = Page.where(:module => 'archive').collect{|p| p.url} if module_pages.length<1 @@ -100,6 +101,17 @@ class Admin::ArchiveFilesController < OrbitAdminController # PUT /archive_files/1 # PUT /archive_files/1.xml def update + params["archive_file"]["archive_file_multiples_attributes"].each do |k,v| + if v["file"].class == String + file_content_info = JSON.parse(v["file"]) + content_type = file_content_info["type"] + filename = file_content_info["name"] + head = "Content-Disposition: form-data; name=\"archive_file[archive_file_multiples_attributes][#{k}][file]\"; filename=\"#{filename}\" Content-Type: #{content_type}" + tempfile = Tempfile.new(filename,binmode: true) + tempfile.write(file_content_info["content"].unpack('U*').map{|i| i.chr }.join) + v["file"] = ActionDispatch::Http::UploadedFile.new({:filename=>filename,:type=>content_type,:head=>head,:tempfile=>tempfile}) + end + end @archive_file = ArchiveFile.find(params[:id]) @archive_file.update_user_id = current_user.id diff --git a/app/views/admin/archive_files/_form.html.erb b/app/views/admin/archive_files/_form.html.erb index 310f829..518338f 100644 --- a/app/views/admin/archive_files/_form.html.erb +++ b/app/views/admin/archive_files/_form.html.erb @@ -221,6 +221,32 @@ <% content_for :page_specific_javascript do %>