github.com/qiniu/go-sdk/v7@v7.27.0/storagev2/downloader/doc.go (about)

     1  // Package downloader 提供七牛云对象存储的下载管理。
     2  //
     3  // [DownloadManager] 是推荐的下载入口,支持文件下载、流式下载和目录下载。
     4  // 支持并发分片下载、断点续传和多种 URL 生成策略。
     5  //
     6  // # 基本用法
     7  //
     8  //	downloadManager := downloader.NewDownloadManager(&downloader.DownloadManagerOptions{
     9  //	    Options: http_client.Options{Credentials: cred},
    10  //	})
    11  //
    12  //	// 下载到文件(通过 ObjectOptions 指定 URL 生成策略)
    13  //	size, err := downloadManager.DownloadToFile(ctx, "my-file.txt", "/tmp/file.txt", &downloader.ObjectOptions{
    14  //	    DownloadURLsProvider: downloader.SignURLsProvider(
    15  //	        downloader.NewStaticDomainBasedURLsProvider([]string{"cdn.example.com"}),
    16  //	        downloader.NewCredentialsSigner(cred),
    17  //	        nil,
    18  //	    ),
    19  //	})
    20  //
    21  //	// 下载到 Writer
    22  //	size, err := downloadManager.DownloadToWriter(ctx, "my-file.txt", writer, nil)
    23  //
    24  //	// 下载整个目录
    25  //	err := downloadManager.DownloadDirectory(ctx, "/tmp/backup", &downloader.DirectoryOptions{
    26  //	    BucketName: "my-bucket",
    27  //	})
    28  //
    29  // # URL 生成策略
    30  //
    31  // 通过 [DownloadURLsProvider] 接口控制下载 URL 的生成方式:
    32  //
    33  //   - [NewStaticDomainBasedURLsProvider]: 使用固定域名
    34  //   - [NewDefaultSrcURLsProvider]: 自动查询源站域名
    35  //   - [NewDomainsQueryURLsProvider]: 通过 API 查询域名
    36  //   - [CombineDownloadURLsProviders]: 组合多个 Provider
    37  //
    38  // # URL 签名
    39  //
    40  // 使用 [Signer] 接口为下载 URL 添加认证签名:
    41  //
    42  //	signer := downloader.NewCredentialsSigner(cred)
    43  //	signedProvider := downloader.SignURLsProvider(urlsProvider, signer, nil)
    44  //
    45  // # 并发下载
    46  //
    47  // 使用 [NewConcurrentDownloader] 通过 HTTP Range 请求并发下载大文件:
    48  //
    49  //	dest := downloader.NewConcurrentDownloader(&downloader.ConcurrentDownloaderOptions{
    50  //	    Concurrency: 4,
    51  //	    PartSize:    4 * 1024 * 1024,
    52  //	})
    53  package downloader