【发布时间】:2019-01-09 19:04:56
【问题描述】:
我正在使用 Cordova Media 将音频录制到一个空文件中。
要上传它,我需要在文件上有内容类型。
我正在尝试将文件转换为 Blob,以便设置内容类型,但是我正在努力将文件转换为 Blob
state.cordova.localDirectory.getFile(filename,{create:true, exclusive:false},
f => {
const options = {
SampleRate: 16000,
NumberOfChannels: 1,
}
media = new window.Media(f.nativeURL,() =>
f.file(file => {
const blob = new Blob(file,{type: 'audio/m4u'}) <-- Trying to convert file into a blob here
blob.lastModifiedDate = new Date()
blob.name = filename
console.log(blob)
upload(blob,'audio/m4u')
.then(data=> {console.log(data);store.dispatch(voiceAudioUploaded(sessionId,gameTaskId,data))}, err=> console.log(err))
}
, err => console.log('err',err) ))
media.startRecordWithCompression(options)
})
错误是`
未能构造“Blob”:迭代器 getter 不可调用。
`
【问题讨论】:
-
Blob 需要一个可迭代的(例如数组)。我不知道
file是什么,但它似乎不可迭代。请注意,如果它是 Web APIwindow.File中的File,那么它已经是 Blob。但是如果你真的想把它变成一个 Blob,我不知道是什么原因,那么你会做new Blob([file], options)。 -
是的,它是一个window.File,设置内容类型
-
如果有其他设置内容类型的方法,请告诉我
-
为什么需要设置content-type?
-
为什么这个上传功能需要它...无论如何,不要创建一个Blob,而是从这个文件创建一个新文件:
file = new File([file], file.name, {type: 'application/foo'})
标签: javascript file blob