导言
上传大文件总是有点问题,因为您的连接可能被中断,这将使您的整个上传失败。NextCloud有一个分块API,您可以在其中上传更小的块,这些块一旦全部上传,就会组装在服务器上。
请注意,下面的示例代码cur请求,在参数之间有空格(换行的地方) 实际命令不换行。
使用
该API仅适用于实例的注册用户。并使用路径:<server>/remote.php/dav/uploads/<userid>。对于本指南,我们将假定:https://server/remote.php/dav/uploads/roeland
开始块上传
块上传将在1个文件夹中处理。这是所有块被上传到的位置。
首先创建一个具有唯一名称的文件夹。您可以列出当前可用的文件夹,但如果您随机选择UUID,则碰撞的几率很小。
curl -X MKCOL -u roeland:pass
https://server/remote.php/dav/uploads/roeland/myapp-e1663913-4423-4efe-a9cd-26e7beeca3c0
上传块
一旦为这些块创建了一个文件夹,我们就可以开始上传这些块了。我们对您试图上传的块的顺序或大小没有限制。这意味着,您甚至可以调整您的块大小,以适应您的可用带宽。例如,如果您从移动互联网切换到WiFi,您可能需要增加块大小。
我们把它们分类。在组装之前。因此,建议以排序始终有效的方式命名它们。
XXXXXXXXXXXXXXX-YYYYYYYYYYYYYYY
哪里XXXXXXXXXXXXXXX是块的起始字节(带有前导零)和YYYYYYYYYYYYYYY带前导零的块的结束字节。
curl -X PUT -u roeland:pass
https://server/remote.php/dav/uploads/roeland/myapp-e1663913-4423/000000000000000-000000010485759 -d @chunk1
curl -X PUT -u roeland:pass
https://server/remote.php/dav/uploads/roeland/myapp-e1663913-4423/000000010485760-000000015728640 -d @chunk2
这将上传2块文件。第一个块的大小为10 MB,第二个块的大小为5MB。
组装块
在服务器上组装块是一个从客户端开始移动的问题。
curl -X MOVE -u roeland:pass
--header 'Destination:
https://server/remote.php/dav/uploads/roeland/myapp-e1663913-4423-4efe-a9cd-26e7beeca3c0/.file
服务器现在将组装块并将最终文件移动到文件夹中。dest/file.zip.
如果应该设置修改时间,可以将其作为头添加到日期为unixtime:
curl -X MOVE -u roeland:pass --header 'X-OC-Mtime:1547545326'
--header 'Destination:https://server/remote.php/dav/files/roeland/dest/file.zip'
https://server/remote.php/dav/uploads/roeland/myapp-e1663913-4423-4efe-a9cd-26e7beeca3c0/.file
“否则,当前上载日期将用作修改日期。
这些块和上传文件夹将在之后被删除。
中止上传
如果上传必须中止,这是一个简单的事情或删除上传文件夹。
curl -X DELETE -u roeland:pass
https://server/remote.php/dav/uploads/roeland/myapp-e1663913-4423-4efe-a9cd-26e7beeca3c0/