类:Mongo::Grid::FSBucket::Stream::Write

继承:
对象
  • 对象
显示全部
定义于:
构建/ruby-driver-v2.19/lib/ mongo /grid/ 流/ 写入.rb

Overview

将文件写入 FSBucket 的流。

由于:

  • 2.1.0

实例属性摘要折叠

实例方法摘要折叠

构造函数详情

#initialize (fs, options) ⇒写入

创建用于将文件写入 FSBucket 的流。

例子:

创建流。

Stream::Write.new(fs, options)

参数:

  • fs ( FSBucket )

    GridFS 存储桶对象。

  • 选项 (哈希)

    写入流选项。

  • opts (哈希)

    一组可自定义的选项

选项哈希 ( options ):

  • :file_id 对象

    文件ID。 如果未提供文件ID,则会生成 ObjectId。

  • :write 哈希

    已弃用。 相当于 :write_concern 选项。

  • :write_concern 哈希

    写关注(write concern)选项。 可以是 :w => 整数|字符串、: fsync => 布尔值、:j => 布尔值。

由于:

  • 2.1.0



70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'build/Ruby-driver-v 2.19 /lib/mongo/grid/stream/write.rb', 第70行

def 初始化(fs, 选项)
  @fs = fs
  @length = 0
  @n = 0
  @file_id = 选项[:file_id] || BSON::ObjectId.new
  @options = 选项.dup
=begin WriteConcern 对象支持
  if @options[:write_concern].is_a?(WriteConcern::Base)
    # 缓存实例,以便我们不会不必要地重建它。
    @write_concern = @options[:write_concern]
    @options[:write_concern] = @write_concern.options
  end
=end
  @options.冻结
  @filename = @options[:filename]
  @open = true
end

实例属性详细信息

# file_id对象(只读)

返回 file_id 正在上传的文件的 ID。

返回:

  • ( Object )

    file_id 正在上传的文件的 ID。

由于:

  • 2.1.0



36
37
38
# File 'build/Ruby-driver-v 2.19 /lib/mongo/grid/stream/write.rb', 第36行

def file_id
  @file_id
end

# filenamestring (readonly)

返回 filename 正在上传的文件的名称。

返回:

  • ( string )

    filename 正在上传的文件的名称。

由于:

  • 2.1.0



41
42
43
# File 'build/Ruby-driver-v 2.19 /lib/mongo/grid/stream/write.rb', 第41行

def 文件名
  @filename
end

# fsFSBucket (只读)

返回 fs 该流写入的 fs 存储桶。

返回:

  • ( FSBucket )

    fs 此流写入的 fs 存储桶。

由于:

  • 2.1.0



31
32
33
# File 'build/Ruby-driver-v 2.19 /lib/mongo/grid/stream/write.rb', 第31行

def fs
  @fs
end

# options哈希(只读)

返回 options 写入流选项。

返回:

  • (哈希)

    options 写入流选项。

由于:

  • 2.1.0



46
47
48
# File 'build/Ruby-driver-v 2.19 /lib/mongo/grid/stream/write.rb', 第46行

def 选项
  @options
end

实例方法详细信息

# aborttrue

删除所有已插入的数据段,中止上传。

例子:

中止写入操作。

stream.abort

返回:

  • ( true )

    如果操作已中止且流已关闭,则为 True。

由于:

  • 2.1.0



168
169
170
171
# File 'build/Ruby-driver-v 2.19 /lib/mongo/grid/stream/write.rb', 第168行

def 中止
  fs.chunks_collection.find({ :files_id => file_id }, @options).delete_many
  (@open = false) || true
end

# closeBSON::ObjectId , Object

关闭写入流。

例子:

关闭流。

stream.close

返回:

  • ( BSON::ObjectId , Object )

    文件 ID。

引发:

由于:

  • 2.1.0



124
125
126
127
128
129
130
# File 'build/Ruby-driver-v 2.19 /lib/mongo/grid/stream/write.rb', 第124行

def 关闭
  确保_open!
  update_length
  files_collection.insert_one(file_info, @options)
  @open = false
  file_id
end

#已关闭?true , false

流是否已关闭。

例子:

流是否已关闭。

stream.closed?

返回:

  • ( true , false )

    流是否已关闭。

由于:

  • 2.1.0



156
157
158
# File 'build/Ruby-driver-v 2.19 /lib/mongo/grid/stream/write.rb', 第156行

def 已关闭?
  !@open
end

# write (io) ⇒ Stream::Write

从流或string写入GridFS存储桶。

例子:

写入GridFS。

stream.write(io)

参数:

  • io ( string | IO )

    要从中上传的string或 IO 对象。

返回:

由于:

  • 2.1.0



98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'build/Ruby-driver-v 2.19 /lib/mongo/grid/stream/write.rb', 第98行

def (io)
  确保_open!
  @indexes ||= ensure_indexes!
  @length += if io.respond_to?(:bytesize)
    # string对象
    io.bytesize
  else
    # IO 对象
    io.size
  end
  数据块 = file::数据块.拆分(io, file_info, @n)
  @n += 数据块.size
  chunks_collection.insert_many(数据块) 除非 数据块.空?
  self
end

# write_concernMongo::WriteConcern

获取上传时使用的写关注(write concern)。

例子:

获取写关注(write concern)。

stream.write_concern

返回:

由于:

  • 2.1.0



140
141
142
143
144
145
146
# File 'build/Ruby-driver-v 2.19 /lib/mongo/grid/stream/write.rb', 第140行

def write_concern
  @write_concern ||= if wco = @options[:write_concern] || @options[:write]
    writeConcern.获取(wco)
  else
    fs.write_concern
  end
end