文件下载

当您需要下载存储在 pds 上的文件时,我们提供了多种下载方式,以满足不同的下载场景。

直接获取文件下载链接进行下载

调用GetDownloadUrl - 获取文件下载地址接口,获取文件的临时下载链接。

文件的下载链接有时效限制,默认为 15 分钟,最长支持 32 个小时,请在获取到链接后的有效期内进行下载,如果链接过期,则需要重新调用接口获取下载链接。如果您在有效期内已经开始进行下载,只要传输没有中断,下载过程中即使超过了有效期也不会受到影响。

断点续传

当您在通过下载链接下载大文件时,可以通过在下载请求的 header 中设置Range头,指定从文件某个位置进行下载。

Range有效区间在 0 至 file size -1 的范围内具体示例如下:

  • Range: bytes=0-499 表示第0~499字节范围的内容。

  • Range: bytes=500-999 表示第500~999字节范围的内容。

  • Range: bytes=-500 表示最后500字节的内容。

  • Range: bytes=500- 表示从第500字节开始到文件结束部分的内容。

  • Range: bytes=0- 表示从第一个字节到最后一个字节,即完整的文件内容。

并发下载

对于大文件如果串行下载所有内容,耗时可能较长,为了提升下载速度,可以开启多个并发,通过设置前述的 Range 头,并发下载一个文件的不同分段,最后按分段位置合成文件。

比如您要下载一个 300 MB 的文件,可以分成 3 个并发,每个并发下载其中 100 MB 内容。

  • 线程 1,设置 Range: bytes=0-104857599

  • 线程 2,设置 Range: bytes=104857600-209715199

  • 线程 3,设置 Range: bytes=209715200-314572799

image

通过 HTTP 302 跳转进行下载

通过调用DownloadFile - 下载文件接口可以直接下载文件,该接口会以 HTTP 302 方式返回下载链接。

适用场景:

  1. 如果您是在网页浏览器上使用,希望通过浏览器直接下载文件;

  2. 如果你的系统需要对文件数据进行缓存(如一些图片组件),因为通过调用GetDownloadUrl - 获取文件下载地址的临时链接每次都不一样,导致缓存无法命中,所以您可以改为调用DownloadFile - 下载文件接口,在其URL的 querystring 中指定drive_id 和 file_id, 相同文件这个 URL一直不变,适合Cache系统。需要注意在访问此接口时有一次重定向,需要在程序中支持。