【发布时间】:2018-01-15 00:50:50
【问题描述】:
背景
我想录制学生的演讲,然后将他们的录音自动上传到 Google 云端硬盘。
现状
我有客户端代码,可以生成包含.ogg 记录的 blob。
var blob = new Blob(chunks, { 'type' : 'audio/ogg; codecs=opus' });
我可以在 doPost() 请求中将 blob 发送到 Google 应用脚本独立脚本。在这种情况下,我使用带有承诺的 axios。
axios.post("https://script.google.com/macros/s/SOME_ID/exec", blob)
.then((response)=>{
console.log(response)
}).catch(error =>{
console.log(error)
})
blob 到达独立脚本。
独立的 Google 应用脚本
function doPost(e) {
var params = JSON.stringify(e.parameters);
createNewSoundFile(params)
return ContentService.createTextOutput(params);
}
function createNewSoundFile(blob){
var title = 'Was created from a recording'
var folderId = 'SOME_FOLDER_ID'
var resource = {
title: title,
parents: [
{
"id": folderId,
"kind": "drive#fileLink"
}
],
mimeType: 'application/vnd.google-apps.audio',
};
try{
var newfile = Drive.Files.insert(resource, blob).id
} catch(e){
// Send error to Google sheet
// Exception: The mediaData parameter only supports blob types for uploads.
}
}
问题
上面的应用程序脚本代码表明 blob 不是支持媒体类型。
问题
如何从浏览器中创建的 .ogg blob 在 Google 驱动器中创建一个新的 .ogg 文件?
【问题讨论】:
-
创建文件时是否必须使用
application/vnd.google-apps.audio而不是audio/ogg作为mimeType? -
文本错误信息是什么?
-
我添加了错误。不幸的是,这是一个谷歌翻译。例外:mediaData 매개변수는 업로드에 Blob 유형만 지원합니다。
-
@Tanaike 我使用哪种 mime 类型似乎并不重要 - 仍然有同样的错误。
-
感谢您的回复。我发布了一个答案。
blob转换为 base64 并发送到 WebApps。请将此视为几个答案之一。
标签: javascript google-apps-script google-drive-api blob