Pre-release
This release is a pre-release and may not be stable for production use.
================
Python-resumable
================
Well, in order to explain what is Python-resumable we have to explain what is ResumableJS. ResumableJS is a JavaScript library providing multiple simultaneous, stable and resumable uploads via the HTML5 File API. And python-resumable is a universal hookup for resumablejs. We'd like to create an interface that works regardless of which framework you use.
It has a universal hookup, that takes chunks as base64 strings, and currently it has a Flask-specific hookup that takes Flask file objects. We'd like to add Pyramid and Django hooks.
======
Usage
======
It's rather simple to use. It has to take 5 Resumable headers, your upload and tmp directory and file data as well.
Here's a simple Flask example.
```python
from flask import Flask, request, jsonify
from python_resumable import FlaskUploader
app = Flask(__name__)
@app.route('/uploads', methods=['GET'])
def check_status():
"""This route works with get checks from resumable"""
request = flask.request
resumable_dict = {
'resumableIdentifier': request.form.get('resumableIdentifier'),
'resumableFilename': request.form.get('resumableFilename'),
'resumableTotalSize': request.form.get('resumableTotalSize'),
'resumableTotalChunks': request.form.get('resumableTotalChunks'),
'resumableChunkNumber': request.form.get('resumableChunkNumber')
}
resumable = FlaskUploader(resumable_dict,
settings.UPLOAD_FOLDER_PROJECTS,
settings.UPLOAD_FOLDER_TMP,
flask.request.files['file'])
if resumable.chunk.exists() is True:
return jsonify({"chunkUploadStatus": True})
return jsonify({"chunkUploadStatus": False})
@app.route('/uploads', methods=['POST'])
def upload_file():
request = flask.request
resumable_dict = {
'resumableIdentifier': request.form.get('resumableIdentifier'),
'resumableFilename': request.form.get('resumableFilename'),
'resumableTotalSize': request.form.get('resumableTotalSize'),
'resumableTotalChunks': request.form.get('resumableTotalChunks'),
'resumableChunkNumber': request.form.get('resumableChunkNumber')
}
resumable = FlaskUploader(resumable_dict,
'/home/user/uploads',
'/home/user/tmp',
flask.request.files['file'])
resumable.upload_chunk()
if resumable.check_status() is True:
resumable.assemble_chunks()
return jsonify({"fileUploadStatus": True,
"resumableIdentifier": resumable.repo.file_id})
return jsonify({"chunkUploadStatus": True,
"resumableIdentifier": resumable.repo.file_id})
```
Well... As simple as it could actually get with Resumable.
==============
Mini-reference
==============
This package provides you with two usable classes -- Uploader and FlaskUploader. They are essentially identical, except for the type of chunk-data they take.
Arguments on creation:
* ```resumable_dict```: contains Resumable data in a dictionary form, namely: ```'resumableIdentifier', 'resumableFilename', 'resumableTotalSize', 'resumableTotalChunks', 'resumableChunkNumber'```
* ```upload_dir```: contains path to your final directory where the file will be assembled.
* ```tmp_dir```: contains path to temporary directory, where it will store the chunks.
* ```chunk_data```: contains data transfered with the chunk. Uploader takes generic b64 strings, FlaskUploader takes Flask file objects.
Attributes:
* ```Chunk```: Stores chunk-related data. For full inforamtion -- refer to the full reference.
* ```Repository```: Stores data related to the end file. For full inforamtion -- refer to the full reference.
Methods:
* ```upload_chunk```: If chunk already exists returns False, else saves chunk to ```tmp_dir/resumableId/chunk_name``` and returns True.
* ```check_status```: If all chunks are in tmp returns True, else returns False.
* ```assemble_chunks```: Assembles all of the chunks in your ```upload_dir```. If filename is not specified uses resumableFilename.
* ```cleanup```: Deletes all the data from ```tmp_dir/resumableId```.
Full reference can be found in docstrings.
=====
Links
=====
.. _a ResumableJS: http://www.resumablejs.com/
Python-resumable
================
Well, in order to explain what is Python-resumable we have to explain what is ResumableJS. ResumableJS is a JavaScript library providing multiple simultaneous, stable and resumable uploads via the HTML5 File API. And python-resumable is a universal hookup for resumablejs. We'd like to create an interface that works regardless of which framework you use.
It has a universal hookup, that takes chunks as base64 strings, and currently it has a Flask-specific hookup that takes Flask file objects. We'd like to add Pyramid and Django hooks.
======
Usage
======
It's rather simple to use. It has to take 5 Resumable headers, your upload and tmp directory and file data as well.
Here's a simple Flask example.
```python
from flask import Flask, request, jsonify
from python_resumable import FlaskUploader
app = Flask(__name__)
@app.route('/uploads', methods=['GET'])
def check_status():
"""This route works with get checks from resumable"""
request = flask.request
resumable_dict = {
'resumableIdentifier': request.form.get('resumableIdentifier'),
'resumableFilename': request.form.get('resumableFilename'),
'resumableTotalSize': request.form.get('resumableTotalSize'),
'resumableTotalChunks': request.form.get('resumableTotalChunks'),
'resumableChunkNumber': request.form.get('resumableChunkNumber')
}
resumable = FlaskUploader(resumable_dict,
settings.UPLOAD_FOLDER_PROJECTS,
settings.UPLOAD_FOLDER_TMP,
flask.request.files['file'])
if resumable.chunk.exists() is True:
return jsonify({"chunkUploadStatus": True})
return jsonify({"chunkUploadStatus": False})
@app.route('/uploads', methods=['POST'])
def upload_file():
request = flask.request
resumable_dict = {
'resumableIdentifier': request.form.get('resumableIdentifier'),
'resumableFilename': request.form.get('resumableFilename'),
'resumableTotalSize': request.form.get('resumableTotalSize'),
'resumableTotalChunks': request.form.get('resumableTotalChunks'),
'resumableChunkNumber': request.form.get('resumableChunkNumber')
}
resumable = FlaskUploader(resumable_dict,
'/home/user/uploads',
'/home/user/tmp',
flask.request.files['file'])
resumable.upload_chunk()
if resumable.check_status() is True:
resumable.assemble_chunks()
return jsonify({"fileUploadStatus": True,
"resumableIdentifier": resumable.repo.file_id})
return jsonify({"chunkUploadStatus": True,
"resumableIdentifier": resumable.repo.file_id})
```
Well... As simple as it could actually get with Resumable.
==============
Mini-reference
==============
This package provides you with two usable classes -- Uploader and FlaskUploader. They are essentially identical, except for the type of chunk-data they take.
Arguments on creation:
* ```resumable_dict```: contains Resumable data in a dictionary form, namely: ```'resumableIdentifier', 'resumableFilename', 'resumableTotalSize', 'resumableTotalChunks', 'resumableChunkNumber'```
* ```upload_dir```: contains path to your final directory where the file will be assembled.
* ```tmp_dir```: contains path to temporary directory, where it will store the chunks.
* ```chunk_data```: contains data transfered with the chunk. Uploader takes generic b64 strings, FlaskUploader takes Flask file objects.
Attributes:
* ```Chunk```: Stores chunk-related data. For full inforamtion -- refer to the full reference.
* ```Repository```: Stores data related to the end file. For full inforamtion -- refer to the full reference.
Methods:
* ```upload_chunk```: If chunk already exists returns False, else saves chunk to ```tmp_dir/resumableId/chunk_name``` and returns True.
* ```check_status```: If all chunks are in tmp returns True, else returns False.
* ```assemble_chunks```: Assembles all of the chunks in your ```upload_dir```. If filename is not specified uses resumableFilename.
* ```cleanup```: Deletes all the data from ```tmp_dir/resumableId```.
Full reference can be found in docstrings.
=====
Links
=====
.. _a ResumableJS: http://www.resumablejs.com/
Release files for python-resumable 0.1rc0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| python_resumable-0.1rc0-py3-none-any.whl | Python 3 | none | any | Details |
Release files / python_resumable-0.1rc0-py3-none-any.whl
| Download URL | python_resumable-0.1rc0-py3-none-any.whl |
|---|---|
| Size | 7.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2004f675a11381ba3f216794a796d2d6d54fe94fd1ba50f9dc4939860f7d4bf9
|
|
BLAKE2b-256 checksum How to use checksums |
9f6ef1d903ccc299312767c97402a460f38f66e06a983af152c25503e8fa643e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |