diff --git a/app/actors/hyrax/actors/file_set_actor.rb b/app/actors/hyrax/actors/file_set_actor.rb index 908c4c1fb7..bee7d9cf53 100644 --- a/app/actors/hyrax/actors/file_set_actor.rb +++ b/app/actors/hyrax/actors/file_set_actor.rb @@ -131,12 +131,12 @@ def wrapper!(file:, relation:) # @note This is only useful for labeling the file_set, because of the recourse to import_url def label_for(file) if file.is_a?(Hyrax::UploadedFile) # filename not present for uncached remote file! - file.uploader.filename.present? ? file.uploader.filename : File.basename(Addressable::URI.parse(file.file_url).path) + file.uploader.filename.present? ? file.uploader.filename : File.basename(Addressable::URI.unencode(file.file_url)) elsif file.respond_to?(:original_name) # e.g. Hydra::Derivatives::IoDecorator file.original_name elsif file_set.import_url.present? # This path is taken when file is a Tempfile (e.g. from ImportUrlJob) - File.basename(Addressable::URI.parse(file_set.import_url).path) + File.basename(Addressable::URI.unencode(file.file_url)) else File.basename(file) end diff --git a/spec/actors/hyrax/actors/file_set_actor_spec.rb b/spec/actors/hyrax/actors/file_set_actor_spec.rb index 87dca7d78c..af41d52ce9 100644 --- a/spec/actors/hyrax/actors/file_set_actor_spec.rb +++ b/spec/actors/hyrax/actors/file_set_actor_spec.rb @@ -14,6 +14,22 @@ let(:relation) { :original_file } let(:file_actor) { Hyrax::Actors::FileActor.new(file_set, relation, user) } + describe 'non ascii characters in filenames' do + let(:file_path) { File.join(fixture_path, '世界.png') } + let(:file) { fixture_file_upload(file_path, 'image/png') } + let(:local_file) { File.open(file_path) } + let(:file_set) { build(:file_set) } + + before do + actor.create_content(file) + actor.file_set.reload + end + + it 'retains the filename with the japanese characters' do + expect(file_set.label).to start_with('世界') + end + end + describe 'private' do let(:file_set) { build(:file_set) } # avoid 130+ LDP requests diff --git "a/spec/fixtures/\344\270\226\347\225\214.png" "b/spec/fixtures/\344\270\226\347\225\214.png" new file mode 100644 index 0000000000..efbe348def Binary files /dev/null and "b/spec/fixtures/\344\270\226\347\225\214.png" differ