首页 > 解决方案 > 如何在对 Google Apps 脚本的发布请求中捕获上传的文件?

问题描述

我正在尝试构建一个脚本来保存 HTML 表单(不是 Google 表单)中的数据(文本 + 图像 + pdf)。

我有以下功能来上传文件:

function upload(x) {
  var destination_id = 'folder_id'
  var destination = DriveApp.getFolderById(destination_id)
  
  var contentType = 'image/png'
  var img = x.getAs(contentType)
  destination.createFile(img)
}

在我的doPost函数中,我像这样调用上面的上传函数:

upload(e.parameter.img)

我有一个类型的输入,file其名称和 id 为img. 我还有以下事件侦听器来准备 POST 请求的主体:

form.addEventListener('submit', e => {
      e.preventDefault()
      let fd = new FormData(form)
      
      fetch(scriptURL, { method: 'POST', body: fd})
        .then(response => console.log('Success!', response))
        .catch(error => console.error('Error!', error.message))
    })

当我提交表单时,我的文本被保存,但文件没有上传。我也没有在控制台中看到任何错误。我究竟做错了什么?将表单数据上传到 Google Drive 是否有更简单的替代方法?

标签: javascriptgoogle-apps-scriptfile-uploadgoogle-apps

解决方案


type=file目前似乎不支持。您可以在客户端使用FileReaderapi 将文件数据转换为 base64 编码的网络安全字符串并将数据作为string字节数组发送。

相关答案


推荐阅读