Opened 12 years ago
Closed 11 years ago
#20196 closed New feature (wontfix)
Better support for folder uploads
Reported by: | Jonas H. | Owned by: | nobody |
---|---|---|---|
Component: | Forms | Version: | |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Someday/Maybe | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
Feature request: Make folder uploads (<input type=file webkitdirectory>
) possible in Django.
Here are some of my ideas regarding design and implementation.
Database, forms
Add a new FolderUploadField
that stores the path where the folder has been uploaded to, similar to how FileUploadFields
work. The object you deal with in business logic code is a Folder
object, the File
equivalent.
QueryDict
Add a QueryDict.getfolder
method that returns a (Uploaded)Folder
object. Note that multi-file and folder uploads are not distinguishable in POST data, so we should have some sanity checks before constructing that object. At the very least we should check that all file paths have a common folder prefix: ["foo/bar.jpg", "foo/spam.txt"]
is okay while ["foo/bar.jpg", "spam/eggs.txt"]
is not.
Folder
object
Constructed from list of File
objects, it should at least have these two methods:
.walk()
behaves similar toos.walk
but yieldsFile
objects.save(dest)
saves the whole folder in its original structure underdest
.
Testing
Special handling is required to properly encode Folder
objects in the test client.
Change History (2)
comment:1 by , 12 years ago
Component: | Uncategorized → Forms |
---|---|
Triage Stage: | Unreviewed → Someday/Maybe |
comment:2 by , 11 years ago
Resolution: | → wontfix |
---|---|
Status: | new → closed |
I still believe an external app is the way to go, at least at first. Please reopen if some code in Django needs to be changed to make this possible.
It looks like this could live outside of core at first. I'd prefer to wait until this feature is standardized by W3C to implement it in Django.
The testing part may be tricky, but can probably be solved by subclassing the test client.