Class: COS::COSFile

Inherits:
ResourceOperator show all
Defined in:
lib/cos/file.rb

Overview

COS文件资源

Constant Summary collapse

STORAGE_UNITS =
%w[B KB MB GB]
STORAGE_BASE =
1024

Instance Attribute Summary

Attributes inherited from ResourceOperator

#type

Instance Method Summary collapse

Methods inherited from ResourceOperator

#created_at, #delete, #delete!, #exist?, #stat, #to_hash, #update, #updated_at

Methods included from Struct::Base::AttrHelper

#optional_attrs, #required_attrs

Constructor Details

#initialize(attrs = {}) ⇒ COS::COSFile

初始化

Parameters:

  • attrs (Hash) (defaults to: {})

    参数

Options Hash (attrs):

  • :bucket (Bucket)

    COS::Bucket对象

  • :path (String)

    存储路径

  • :name (String)

    文件名

  • :ctime (String)

    创建时间unix时间戳

  • :mtime (String)

    修改时间unix时间戳

  • :biz_attr (String)

    业务信息

  • :filesize (String)

    文件存储大小

  • :filelen (String)

    文件大小

  • :sha (String)

    文件sha1值

  • :access_url (String)

    文件访问地址

Raises:


28
29
30
31
# File 'lib/cos/file.rb', line 28

def initialize(attrs = {})
  super(attrs)
  @type = 'file'
end

Instance Method Details

#complete?Boolean

文件是否完整, 是否上传完了

Returns:

  • (Boolean)

    是否完整


83
84
85
# File 'lib/cos/file.rb', line 83

def complete?
  access_url != nil and filelen == filesize
end

#download(file_store, options = {}) {|Float| ... } ⇒ String

下载当前文件, 支持断点续传, 支持多线程

Parameters:

  • file_store (String)

    本地文件存储路径

  • options (Hash) (defaults to: {})

    高级参数

Options Hash (options):

  • :min_slice_size (Integer)

    完整下载最小文件大小, 超过此大小将会使用分片多线程断点续传

  • :download_retry (Integer)

    下载重试次数, 默认10

  • :disable_cpt (Boolean)

    是否禁用checkpoint功能,如 果设置为true,则在下载的过程中不会写checkpoint文件,这意味着 下载失败后不能断点续传,而只能重新下载整个文件。如果这个值为 true,则:cpt_file会被忽略。

  • :threads (Integer)

    多线程下载线程数, 默认为10

  • :slice_size (Integer)

    设置分片下载时每个分片的大小 默认为5 MB。

  • :cpt_file (String)

    断点续传的checkpoint文件,如果 指定的cpt文件不存在,则会在file所在目录创建一个默认的cpt文件, 命名方式为:file.cpt,其中file是用户要下载的文件名。在下载的过 程中会不断更新此文件,成功完成下载后会删除此文件;如果指定的 cpt文件已存在,则从cpt文件中记录的点继续下载。

Yields:

  • (Float)

    下载进度百分比回调, 进度值是一个0-1之间的小数

Returns:

  • (String)

Raises:

See Also:


130
131
132
# File 'lib/cos/file.rb', line 130

def download(file_store, options = {}, &block)
  bucket.download(self, file_store, options, &block)
end

#filelenInteger

获取文件大小并转为数值型

Returns:

  • (Integer)

    文件大小


43
44
45
# File 'lib/cos/file.rb', line 43

def filelen
  @filelen.to_i
end

#filesizeInteger

获取文件存储大小并转为数值型

Returns:

  • (Integer)

    文件存储大小


36
37
38
# File 'lib/cos/file.rb', line 36

def filesize
  @filesize.to_i
end

#format_sizeString

获取格式化的文件大小

Examples:

1B 1KB 1.1MB 1.12GB...

Returns:

  • (String)

68
69
70
71
72
73
74
75
76
77
78
# File 'lib/cos/file.rb', line 68

def format_size
  if filesize.to_i < STORAGE_BASE
    size_str = filesize.to_s + STORAGE_UNITS[0]
  else
    c_size = human_rep(filesize.to_i)
    size_str = "%.2f" % c_size[:size].round(2)
    size_str = "#{size_str}#{c_size[:unit]}"
  end

  size_str
end

#sha1_match?(file) ⇒ Boolean

判断文件sha1是否一致

Returns:

  • (Boolean)

    是否一致


50
51
52
53
# File 'lib/cos/file.rb', line 50

def sha1_match?(file)
  file = File.expand_path(file)
  File.exist?(file) and sha.upcase == Util.file_sha1(file).upcase
end

#sizeObject

文件大小


58
59
60
# File 'lib/cos/file.rb', line 58

def size
  filesize.to_i
end

#url(options = {}) ⇒ String

Note:

私有读取的bucket会自动生成带签名的URL

获取文件的URL, 支持cname, https

Parameters:

  • options (Hash) (defaults to: {})

    高级参数

Options Hash (options):

  • :cname (String)

    在cos控制台设置的cname域名

  • :https (Boolean)

    是否生成https的URL

  • :expire_seconds (Integer)

    签名有效时间(秒,私有读取bucket时需要)

Returns:

  • (String)

    文件访问URL

Raises:


99
100
101
# File 'lib/cos/file.rb', line 99

def url(options = {})
  bucket.url(self, options)
end