使用会话上传大文件时如何设置写入模式

How to set WriteMode when using a sesssion to upload large file

我正在编写一个脚本,使用 python 保管箱模块 (V2) 将文件上传到保管箱。文件将根据大小一次性或通过会话上传。相关代码如下:

with open(file, 'rb') as f:
    try:
        file_size = os.path.getsize(file)
        chunk_size = 4*1024*1024
        if file_size < chunk_size:
            dbx.files_upload(f.read(), file_to, mode=dropbox.files.WriteMode.overwrite)
        else:
            session_start_result = dbx.files_upload_session_start(f.read(chunk_size))
            cursor = dropbox.files.UploadSessionCursor(session_id=session_start_result.session_id, offset=f.tell())
            commit = dropbox.files.CommitInfo(path=file_to)
            while f.tell() < file_size:
                if (file_size - f.tell()) <= chunk_size:
                    dbx.files_upload_session_finish(f.read(chunk_size), cursor, commit)
                else:
                    dbx.files_upload_session_append_v2(f.read(chunk_size), cursor)
                    cursor.offset = f.tell()

但是,如果会话选项用于上传与 Dropbox 文件夹中已有文件同名的大文件,这将引发错误。对于小文件上传,您可以设置 WriteMode,但是在使用 session/cursor.

时我找不到任何关于如何执行此操作的文档

任何正确方向的帮助或推动将不胜感激。

使用上传会话时,您可以通过 mode 参数在 the dropbox.files.CommitInfo object 上设置 WriteMode。那应该是一个dropbox.files.WriteMode,就像在小文件场景中一样。

然后您将 CommitInfo 传递给 files_upload_session_finish,就像您已经在做的那样。