File tree Expand file tree Collapse file tree 3 files changed +24
-0
lines changed
Expand file tree Collapse file tree 3 files changed +24
-0
lines changed Original file line number Diff line number Diff line change @@ -151,6 +151,18 @@ The field itself should be an ``<input type=file>``.
151151 </form>
152152
153153
154+ Non-ASCII Filename Support
155+ ==========================
156+ Flask-Uplaods use Werkzeug's ``secure_filename() `` to check filename, it will omit
157+ Non-ASCII string. When the filename is completely consist of Non-ASCII string,
158+ such as Chinese or Japanese, it will return empty filename like ``.jpg ``. If your
159+ files may encounter a situation like this, you have to set it's name or generate
160+ random filename::
161+
162+ uset.save(file, name='photo_123.')
163+ # If name ends with a dot, the file's extension will be appended to the end.
164+
165+
154166API Documentation
155167=================
156168This documentation is generated directly from the source code.
Original file line number Diff line number Diff line change @@ -100,6 +100,9 @@ def tuple_from(*iters):
100100
101101def extension (filename ):
102102 ext = os .path .splitext (filename )[1 ]
103+ if ext == '' :
104+ # add non-ascii filename support
105+ ext = os .path .splitext (filename )[0 ]
103106 if ext .startswith ('.' ):
104107 # os.path.splitext retains . separator
105108 ext = ext [1 :]
Original file line number Diff line number Diff line change @@ -160,6 +160,15 @@ def test_filenames(self):
160160 tfs = TestingFileStorage (filename = name )
161161 assert uset .file_allowed (tfs , name ) is result
162162
163+ def test_non_ascii_filename (self ):
164+ uset = UploadSet ('files' )
165+ uset ._config = Config ('/uploads' )
166+ tfs = TestingFileStorage (filename = u'天安门.jpg' )
167+ res = uset .save (tfs )
168+ assert res == 'jpg'
169+ res = uset .save (tfs , name = 'secret.' )
170+ assert res == 'secret.jpg'
171+
163172 def test_default_extensions (self ):
164173 uset = UploadSet ('files' )
165174 uset ._config = Config ('/uploads' )
You can’t perform that action at this time.
0 commit comments