File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 207207
208208 'additional_uploadable_extensions ' => [],
209209
210+ /*
211+ |--------------------------------------------------------------------------
212+ | Additional Filename Character Replacements
213+ |--------------------------------------------------------------------------
214+ |
215+ | When uploading files, certain characters in filenames will be replaced
216+ | to ensure a safe filename. You may configure additional replacements.
217+ | These are in addition to the native ones. They are not overridable.
218+ |
219+ */
220+
221+ 'additional_filename_replacements ' => [],
222+
210223 /*
211224 |--------------------------------------------------------------------------
212225 | SVG Sanitization
Original file line number Diff line number Diff line change @@ -80,7 +80,7 @@ protected function getNewExtension()
8080
8181 public static function getSafeFilename ($ string )
8282 {
83- $ replacements = [
83+ $ replacements = array_merge ( config ( ' statamic.assets.additional_filename_replacements ' , []), [
8484 ' ' => '- ' ,
8585 '# ' => '- ' ,
8686 ': ' => '- ' ,
@@ -95,7 +95,7 @@ public static function getSafeFilename($string)
9595 '% ' => '- ' ,
9696 "' " => '- ' ,
9797 '-- ' => '- ' ,
98- ];
98+ ]) ;
9999
100100 return (string ) Str::of (urldecode ($ string ))
101101 ->replace (array_keys ($ replacements ), array_values ($ replacements ))
Original file line number Diff line number Diff line change @@ -11,8 +11,9 @@ class AssetUploaderTest extends TestCase
1111{
1212 #[Test]
1313 #[DataProvider('filenameReplacementsProvider ' )]
14- public function it_gets_safe_filename ($ originalFilename , $ expectedFilename )
14+ public function it_gets_safe_filename ($ originalFilename , $ expectedFilename, $ config = [] )
1515 {
16+ config (['statamic.assets.additional_filename_replacements ' => $ config ]);
1617 $ this ->assertEquals ($ expectedFilename , AssetUploader::getSafeFilename ($ originalFilename ));
1718 }
1819
@@ -34,6 +35,25 @@ public static function filenameReplacementsProvider()
3435 'single quote ' => ["one'two'three.jpg " , 'one-two-three.jpg ' ],
3536 'double dash ' => ['one--two--three.jpg ' , 'one-two-three.jpg ' ],
3637 'ascii ' => ['fòô-bàř ' , 'foo-bar ' ],
38+ 'additional config ' => [
39+ 'one,two(6) ' ,
40+ 'onetwo6 ' ,
41+ [
42+ ', ' => '' ,
43+ '( ' => '' ,
44+ ') ' => '' ,
45+ ],
46+ ],
47+ 'additional config does not override native replacements ' => [
48+ 'one,two%three-(6) ' ,
49+ 'onetwo-three-6 ' ,
50+ [
51+ ', ' => '' ,
52+ '( ' => '' ,
53+ ') ' => '' ,
54+ '% ' => '_ ' ,
55+ ],
56+ ],
3757 ];
3858 }
3959}
You can’t perform that action at this time.
0 commit comments