将图像文件转换为Blob

时间:2018-10-15 10:27:11

标签: javascript html firebase

我有以下代码:

@Table
class Address extends Model<Address> {
  @Column({
    type: DataType.UUID,
    allowNull: false,
    primaryKey: true,
    unique: true,
    defaultValue: DataType.UUIDV4
  })
  id: string;

  @ForeignKey // ... ??
  entityId: string;
}

@Table
class Person extends Model<Person> {
  @Column({
    type: DataType.UUID,
    allowNull: false,
    primaryKey: true,
    unique: true,
    defaultValue: DataType.UUIDV4
  })
  id: string;
}

@Table
class Location extends Model<Location> {
  @Column({
    type: DataType.UUID,
    allowNull: false,
    primaryKey: true,
    unique: true,
    defaultValue: DataType.UUIDV4
  })
  id: string;
}

@Table
class Place extends Model<Place> {
  @Column({
    type: DataType.UUID,
    allowNull: false,
    primaryKey: true,
    unique: true,
    defaultValue: DataType.UUIDV4
  })
  id: string;
}

文件->获取数据文件输入(图像)。

我想在发送表单时将此文件转换为blob,然后将BLOB格式的图像上传到Firebase存储,我该怎么做? 我曾经使用过fileReader,但总是返回相同的错误:

  

“ FileReader”上的“ readAsBinaryString”:参数1的类型不是“ Blob”。

如何将文件图像转换为Blob?

1 个答案:

答案 0 :(得分:0)

您不能像您那样简单地在onload函数中设置rawData。到ref.put()运行时,将不会调用onload函数,因此rawData将始终是未定义的。 ref.put()将文件作为参数,因此只需使用ref.put(file.files[0])(不需要阅读器):

var file = document.getElementById("image1");
var filename = file.files[0].name;
//console.log("Archivo: " + filename);
var storageRef = firebase.storage().ref();
var ref = storageRef.child('imagenes/'+filename);

ref.put(file.files[0]).then(...);

另请参阅非常常见的内容:How do I return the response from an asynchronous call?