Method: Baidu::PCS::Client#download

Defined in:
lib/baidu/pcs/client.rb

#download(path, options = {}) ⇒ String #download(path, options = {}) {|segment| ... } ⇒ void

下载单个文件

Download 接口支持 HTTP 协议标准 range 定义,通过指定 range 的取值可以实现断点下载功能。

Examples:

下载文件第 101 - 200 字节之间的内容

File.open('logo.part2.png', 'w') do |f|
  f.write client.download('logo.png', begin: 100, end: 199)
end

Overloads:

  • #download(path, options = {}) ⇒ String
    Note:

    下载大文件会占用过多的内存, 请使用 block 方法 #download(path, &block)

    适合下载小文件,简单直接

    Examples:

    File.open('logo.png', 'w') do |f|
      f.write client.download('logo.png')
    end
    

    Parameters:

    • path (String)

      下载文件路径,路径相对于应用目录,从应用根目录起计算

    Options Hash (options):

    • :begin (Fixnum)

      断点下载的开始字节索引

    • :end (Fixnum)

      断点下载的结束字节索引

    Returns:

    • (String)

      直接返回文件内容

  • #download(path, options = {}) {|segment| ... } ⇒ void

    This method returns an undefined value.

    针对下载大文件优化的方法

    Examples:

    File.open('ubuntu.iso', 'w') do |f|
      client.download('ubuntu-12.04.3-server-amd64.iso') do |segment|
        f.write segment
      end
    end
    

    Parameters:

    • path (String)

      下载文件路径,路径相对于应用目录,从应用根目录起计算

    Options Hash (options):

    • :begin (Fixnum)

      断点下载的开始字节索引

    • :end (Fixnum)

      断点下载的结束字节索引

    Yields:

    • (segment)

      下载内容将以片段的方式提供

See Also:



254
255
256
257
258
259
260
261
262
263
264
265
266
# File 'lib/baidu/pcs/client.rb', line 254

def download(path, options={}, &block)
  site = Baidu::PCS::DOWNLOAD_SITE
  query = { path: build_path(path) }.update(base_query 'download')
  headers = if options[:begin] || options[:end]
              range = "#{options[:begin] || 0}-#{options[:end]}"
              { Range: "bytes=#{range}" }
            end
  if block_given?
    get "#{BASE_PATH}/file", query, site: site, headers: headers, &block
  else
    get "#{BASE_PATH}/file", query, site: site, headers: headers, raw: true
  end
end