Skip to main content
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/

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)

Table of built distributions (wheels) for python-resumable 0.1rc0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

0.1.2

1 release file

0.1.1

2 release files

0.1

1 release file

This release

0.1rc0 This release

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page