def populate_large_file(file_io, size, chunk_size=4096): file_io.write(b"BMJ\xB9Y\x00\x00\x00\x00\x00\x8A\x00\x00\x00|\x00\x00\x00x\x05\x00\x00x\x05\x00\x00\x01\ \x00\x18\x00\x00\x00\x00\x00\xC0\xB8Y\x00a\x0F\x00\x00a\x0F\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\x00\ \x00\xFF\x00\x00\xFF\x00\x00\x00\x00\x00\x00\xFFBGRs\x00\x00\x00\x00\x00\x00\x00\x00T\xB8\x1E\xFC\x00\x00\x00\x00\ \x00\x00\x00\x00fff\xFC\x00\x00\x00\x00\x00\x00\x00\x00\xC4\xF5(\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00") remaining_size = size - utils.file_io_size(file_io) while remaining_size > 0: curr_chunk_size = min(remaining_size, chunk_size) file_io.write(b"\xFF" * curr_chunk_size) remaining_size -= chunk_size file_io.flush() file_io.seek(0)
def populate_large_file(file_io, size, chunk_size=4096): file_io.write(b"BMJ\xB9Y\x00\x00\x00\x00\x00\x8A\x00\x00\x00|\x00\x00\x00x\x05\x00\x00x\x05\x00\x00\x01\ \x00\x18\x00\x00\x00\x00\x00\xC0\xB8Y\x00a\x0F\x00\x00a\x0F\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\x00\ \x00\xFF\x00\x00\xFF\x00\x00\x00\x00\x00\x00\xFFBGRs\x00\x00\x00\x00\x00\x00\x00\x00T\xB8\x1E\xFC\x00\x00\x00\x00\ \x00\x00\x00\x00fff\xFC\x00\x00\x00\x00\x00\x00\x00\x00\xC4\xF5(\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00") remaining_size = size - utils.file_io_size(file_io) while remaining_size > 0: curr_chunk_size = min(remaining_size, chunk_size) file_io.write(b"\xFF" * curr_chunk_size) remaining_size -= chunk_size file_io.flush() file_io.seek(0)
def upload_large(file, **options): """ Upload large files. """ if utils.is_remote_url(file): return upload(file, **options) if hasattr(file, 'read') and callable(file.read): file_io = file else: file_io = open(file, 'rb') upload_result = None with file_io: upload_id = utils.random_public_id() current_loc = 0 chunk_size = options.get("chunk_size", UPLOAD_LARGE_CHUNK_SIZE) file_size = utils.file_io_size(file_io) file_name = options.get( "filename", file_io.name if hasattr(file_io, 'name') and isinstance(file_io.name, str) else "stream") chunk = file_io.read(chunk_size) while chunk: content_range = "bytes {0}-{1}/{2}".format( current_loc, current_loc + len(chunk) - 1, file_size) current_loc += len(chunk) http_headers = { "Content-Range": content_range, "X-Unique-Upload-Id": upload_id } upload_result = upload_large_part((file_name, chunk), http_headers=http_headers, **options) options["public_id"] = upload_result.get("public_id") chunk = file_io.read(chunk_size) return upload_result
def upload_large(file, **options): """ Upload large files. """ if utils.is_remote_url(file): return upload(file, **options) if hasattr(file, 'read') and callable(file.read): file_io = file else: file_io = open(file, 'rb') upload_result = None with file_io: upload_id = utils.random_public_id() current_loc = 0 chunk_size = options.get("chunk_size", UPLOAD_LARGE_CHUNK_SIZE) file_size = utils.file_io_size(file_io) file_name = options.get( "filename", file_io.name if hasattr(file_io, 'name') and isinstance(file_io.name, str) else "stream") chunk = file_io.read(chunk_size) while chunk: content_range = "bytes {0}-{1}/{2}".format(current_loc, current_loc + len(chunk) - 1, file_size) current_loc += len(chunk) http_headers = {"Content-Range": content_range, "X-Unique-Upload-Id": upload_id} upload_result = upload_large_part((file_name, chunk), http_headers=http_headers, **options) options["public_id"] = upload_result.get("public_id") chunk = file_io.read(chunk_size) return upload_result