您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Dropbox API v2使用python上传大型文件

Dropbox API v2使用python上传大型文件

对于此类大文件,您需要使用上传会话。否则,您将遇到诸如发布的错误之类的问题。

这使用Dropbox Python SDK文件从指定的本地文件上载到Drop@R_600_2419@ API,并指定file_path到的远程路径dest_path。它还根据文件的大小选择是否使用上载会话:

import os

from tqdm import tqdm

import drop@R_600_2419@


def upload(
    access_token,
    file_path,
    target_path,
    timeout=900,
    chunk_size=4 * 1024 * 1024,
):
    dbx = drop@R_600_2419@.Drop@R_600_2419@(access_token, timeout=timeout)
    with open(file_path, "rb") as f:
        file_size = os.path.getsize(file_path)
        chunk_size = 4 * 1024 * 1024
        if file_size <= chunk_size:
            print(dbx.files_upload(f.read(), target_path))
        else:
            with tqdm(total=file_size, desc="Uploaded") as pbar:
                upload_session_start_result = dbx.files_upload_session_start(
                    f.read(chunk_size)
                )
                pbar.update(chunk_size)
                cursor = drop@R_600_2419@.files.UploadSessionCursor(
                    session_id=upload_session_start_result.session_id,
                    offset=f.tell(),
                )
                commit = drop@R_600_2419@.files.CommitInfo(path=target_path)
                while f.tell() < file_size:
                    if (file_size - f.tell()) <= chunk_size:
                        print(
                            dbx.files_upload_session_finish(
                                f.read(chunk_size), cursor, commit
                            )
                        )
                    else:
                        dbx.files_upload_session_append(
                            f.read(chunk_size),
                            cursor.session_id,
                            cursor.offset,
                        )
                        cursor.offset = f.tell()
                    pbar.update(chunk_size)
python 2022/1/1 18:27:02 有351人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶