forked from juliomalegria/django-chunked-upload
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
492a3e6
commit 008cf2e
Showing
8 changed files
with
169 additions
and
105 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,13 @@ | ||
*.py[cod] | ||
*.db | ||
*~ | ||
.DS_Store | ||
.*.swp | ||
*.egg | ||
*.egg-info | ||
dist | ||
build | ||
eggs | ||
sdist | ||
develop-eggs | ||
.installed.cfg | ||
pip-log.txt | ||
.DS_Store |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,18 @@ | ||
/* | ||
* ---------------------------------------------------------------------------- | ||
* "THE BEER-WARE LICENSE" (Revision 42): | ||
* <[email protected]> wrote this file. As long as you retain this notice you | ||
* can do whatever you want with this stuff. If we meet some day, and you think | ||
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp | ||
* ---------------------------------------------------------------------------- | ||
*/ | ||
The MIT-Zero License | ||
|
||
Copyright (c) 2015 Julio M Alegria | ||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy | ||
of this software and associated documentation files (the "Software"), to deal | ||
in the Software without restriction, including without limitation the rights | ||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
copies of the Software, and to permit persons to whom the Software is | ||
furnished to do so. | ||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
THE SOFTWARE. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
recursive-include chunked_upload * | ||
include *.rst | ||
include *.txt |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,113 @@ | ||
django-chunked-upload | ||
===================== | ||
|
||
This simple django app enables users to upload large files to Django in multiple chunks, with the ability to resume if the upload is interrupted. | ||
|
||
This app is intented to work with `JQuery-File-Upload <https://github.com/blueimp/jQuery-File-Upload>`__ by `Sebastian Tschan <https://blueimp.net>`__. | ||
|
||
License: `MIT-Zero <https://romanrm.net/mit-zero>`__. | ||
|
||
Typical usage | ||
------------- | ||
|
||
1. An initial POST request is sent to the url linked to ``ChunkedUploadView`` (or any subclass) with the first chunk of the file. The name of the chunk file can be overriden in the view (class attribute ``field_name``). Example: | ||
|
||
:: | ||
|
||
{"my_file": <File>} | ||
|
||
2. In return, server with response with the ``upload_id``, the current ``offset`` and the when will the upload expire (``expires``). Example: | ||
|
||
:: | ||
|
||
{ | ||
"upload_id": "5230ec1f59d1485d9d7974b853802e31", | ||
"offset": 10000, | ||
"expires": "2013-07-18T17:56:22.186Z" | ||
} | ||
|
||
3. Repeatedly POST subsequent chunks using the ``upload_id`` to identify the upload to the url linked to ``ChunkedUploadView`` (or any subclass). Example: | ||
|
||
:: | ||
|
||
{ | ||
"upload_id": "5230ec1f59d1485d9d7974b853802e31", | ||
"my_file": <File> | ||
} | ||
|
||
4. Server will continue responding with the ``upload_id``, the current ``offset`` and the expiration date (``expires``). | ||
|
||
5. Finally, when upload is completed, a POST request is sent to the url linked to ``ChunkedUploadCompleteView`` (or any subclass). This request must include the ``upload_id`` and the ``md5`` checksum (hex). Example: | ||
|
||
:: | ||
|
||
{ | ||
"upload_id": "5230ec1f59d1485d9d7974b853802e31", | ||
"md5": "fc3ff98e8c6a0d3087d515c0473f8677" | ||
} | ||
|
||
6. If everything is OK, server will response with status code 200 and the data returned in the method ``get_response_data`` (if any). | ||
|
||
Possible error responses: | ||
~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
||
* User is not authenticated. Server responds 403 (Forbidden). | ||
* Upload has expired. Server responds 410 (Gone). | ||
* ``upload_id`` does not match any upload. Server responds 404 (Not found). | ||
* No chunk file is found in the indicated key. Server responds 400 (Bad request). | ||
* Request does not contain ``Content-Range`` header. Server responds 400 (Bad request). | ||
* Size of file exceeds limit (if specified). Server responds 400 (Bad request). | ||
* Offsets does not match. Server responds 400 (Bad request). | ||
* ``md5`` checksums does not match. Server responds 400 (Bad request). | ||
|
||
Settings | ||
-------- | ||
|
||
Add any of these variables into your project settings to override them. | ||
|
||
``CHUNKED_UPLOAD_EXPIRATION_DELTA`` | ||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
||
* How long after creation the upload will expire. | ||
* Default: ``datetime.timedelta(days=1)`` | ||
|
||
``CHUNKED_UPLOAD_PATH`` | ||
~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
||
* Path where uploading files will be stored until completion. | ||
* Default: ``'chunked_uploads/%Y/%m/%d'`` | ||
|
||
``CHUNKED_UPLOAD_STORAGE_CLASS`` | ||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
||
* Storage system (should be a class) | ||
* Default: ``None`` (use default storage system) | ||
|
||
``CHUNKED_UPLOAD_ABSTRACT_MODEL`` | ||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
||
* Boolean that defines if the ``ChunkedUpload`` model will be abstract or not (`what does abstract model mean? <https://docs.djangoproject.com/en/1.4/ref/models/options/#abstract>`__) | ||
* Default: ``True`` | ||
|
||
``CHUNKED_UPLOAD_ENCODER`` | ||
~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
||
* Function used to encode response data. Receives a dict and returns a string | ||
* Default: ``DjangoJSONEncoder().encode`` | ||
|
||
``CHUNKED_UPLOAD_MIMETYPE`` | ||
~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
||
* Mimetype for the response data. | ||
* Default: ``'application/json'`` | ||
|
||
``CHUNKED_UPLOAD_MAX_BYTES`` | ||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
||
* Max amount of data (in bytes) that can be uploaded. ``None`` means no limit | ||
* Default: ``None`` | ||
|
||
Support | ||
------- | ||
|
||
If you find any bug or you want to propose a new feature, please use the `issues tracker <https://github.com/juliomalegria/django-chunked-upload/issues>`__. I'll be happy to help you! :-) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
1.0.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
[metadata] | ||
description-file = README.rst |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,12 +1,32 @@ | ||
# -*- coding: UTF-8 -*- | ||
#!/usr/bin/env python | ||
|
||
# Import from the Standard Library | ||
try: | ||
from setuptools import setup | ||
except ImportError: | ||
from distutils.core import setup | ||
|
||
with open('VERSION.txt', 'r') as v: | ||
version = v.read().strip() | ||
|
||
with open('README.rst', 'r') as r: | ||
readme = r.read() | ||
|
||
download_url = ( | ||
'https://github.com/juliomalegria/django-chunked-upload/tarball/%s' | ||
) | ||
|
||
|
||
setup( | ||
name='django-chunked-upload', | ||
packages=['chunked_upload'], | ||
version=version, | ||
description=('Upload large files to Django in multiple chunks, with the ' | ||
'ability to resume if the upload is interrupted.'), | ||
long_description=readme, | ||
author='Julio M Alegria', | ||
author_email='[email protected]', | ||
url='https://github.com/juliomalegria/django-chunked-upload', | ||
download_url=download_url % version, | ||
install_requires=[], | ||
license='MIT-Zero' | ||
) |