Package: python-resumable
Python-resumableWell, 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.UsageIt’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.fromflaskimportFlask,request,jsonifyfrompython_resumableimportFlaskUploaderapp=Flask(__name__)@app.route('/uploads',methods=['GET'])defcheck_status():"""This route works with get checks from resumable"""request=flask.requestresumable_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'])ifresumable.chunk.exists()isTrue:returnjsonify({"chunkUploadStatus":True})returnjsonify({"chunkUploadStatus":False})@app.route('/uploads',methods=['POST'])defupload_file():request=flask.requestresumable_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()ifresumable.check_status()isTrue:resumable.assemble_chunks()returnjsonify({"fileUploadStatus":True,"resumableIdentifier":resumable.repo.file_id})returnjsonify({"chunkUploadStatus":True,"resumableIdentifier":resumable.repo.file_id})Well… As simple as it could actually get with Resumable.Mini-referenceThis 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 totmp_dir/resumableId/chunk_nameand returns True.check_status: If all chunks are in tmp returns True, else returns
False.assemble_chunks: Assembles all of the chunks in yourupload_dir. If filename is not specified uses resumableFilename.cleanup: Deletes all the data fromtmp_dir/resumableId.Full reference can be found in docstrings.LinksResumableJS