工具-百度云盘服务-文件上传

本文详细阐述了如何通过百度网盘API实现文件上传,包括预上传、分片上传和创建文件的步骤,以及相关的限制条件如目录结构、文件大小、类型和频次。还讨论了内存分片上传的潜在问题及优化方向。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目标

将本地文件上传到网盘

实现逻辑

上传流程是指,用户将本地文件上传到百度网盘云端服务器的过程。
文件上传分为三个阶段:预上传分片上传创建文件
第二个阶段分片上传依赖第一个阶段预上传的结果,
第三个阶段创建文件依赖第一个阶段预上传和第二阶段分片上传的结果,串行完成这三个阶段任务后,本地文件成功上传到网盘服务器。
上传逻辑

限制条件

目录限制

每个第三方应用在网盘只能拥有一个文件夹用于存储上传文件,该文件夹必须位于/apps目录下,apps下的文件夹名称为申请接入时填写的申请接入的产品名称。如申请接入的产品名称为云存储,那么该文件夹为/apps/云存储,用户看到的文件夹为/我的应用数据/云存储。

大小限制

所有开发者均可接入使用接口,但可上传单个文件大小根据授权用户的身份有不同的限制:
普通用户单个上传文件大小上限为4GB
会员用户单个上传文件大小上限为10GB
超级会员用户单个上传文件大小上限为20GB
注:分片数量不得超过1024个

类型限制

普通用户在网盘APP端无法上传视频、Live Photo类型的文件。

频次限制

开放平台仅对异常行为进行相应限制,不会影响到您的正常使用。

实现逻辑

预上传

预上传是通知网盘云端新建一个上传任务,网盘云端返回唯一ID uploadid 来标识此上传任务。
# 预上传是通知网盘云端新建一个上传任务,网盘云端返回唯一ID uploadid 来标识此上传任务。
    def file_precreate(self, path, size, block_list, rtype=3):
        api_instance = fileupload_api.FileuploadApi(self.client)
        access_token = self._access_token
        # path = path  # 上传后使用的文件绝对路径,需要urlencode | 对于一般的第三方软件应用,路径以 "/apps/your-app-name/" 开头。对于小度等硬件应用,路径一般 "/来自:小度设备/" 开头。对于定制化配置的硬件应用,根据配置情况进行填写。
        # size = size  # 文件和目录两种情况:上传文件时,表示文件的大小,单位B;上传目录时,表示目录的大小,目录的话大小默认为0
        block_list_str = json.dumps(block_list)  # 文件各分片MD5数组的json串。block_list的含义如下,如果上传的文件小于4MB,其md5值(32位小写)即为block_list字符串数组的唯一元素;如果上传的文件大于4MB,需要将上传的文件按照4MB大小在本地切分成分片,不足4MB的分片自动成为最后一个分片,所有分片的md5值(32位小写)组成的字符串数组即为block_list。
        isdir = 0  # 是否为目录,0 文件,1 目录
        autoinit = 1  # 固定值1
        # rtype = 3  # 文件命名策略 1。1 表示当path冲突时,进行重命名 2 表示当path冲突且block_list不同时,进行重命名 3 当云端存在同名文件时,对该文件进行覆盖
        try:
            api_response = api_instance.xpanfileprecreate(
                access_token, path, isdir, size, autoinit, block_list_str, rtype=rtype)
            # upload_id = api_response['uploadid']
            api_response['path'] = path
            pre_data = api_response
            logging.info(f'文件预上传成功,路径为:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

R_记忆犹新

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值