Skip to main content

Hook for working with resumable.js

Project description

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.

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

python_resumable-0.1.2-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

Details for the file python_resumable-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for python_resumable-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f99983d6ffe87dd7a2d57df9be9633202cfeb726d871f27a9976011767d23b6a
MD5 e891b536e05514c8fd2b651e61ca95dd
BLAKE2b-256 25afbec154c64a4da60d8eeaa4024b339fd8198500ed01b5c10856081e5d37c8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page