javascript - 如何在对 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 是否有更简单的替代方法?
解决方案
type=file
目前似乎不支持。您可以在客户端使用FileReader
api 将文件数据转换为 base64 编码的网络安全字符串并将数据作为string
字节数组发送。
推荐阅读
- java - 什么是在这里抛出 IOException?
- reactjs - gatsbyjs,reactjs - 为什么组件渲染两次而图像没有出现?
- ios - 快速重新加载单元格后如何在单元格中保持滚动视图内容偏移
- html - 在接触和不接触垫子输入后单元测试垫子错误的存在
- node.js - 节点 gyp 不工作(WindowsError:[错误 183] ═хтючьюцэю ёючфрЄ№Їрщы,)
- c++ - 将二进制文件添加到其他人的柯南食谱中
- jquery - 当通过 AJAX 重定向收到 401 时,有没有办法在 Chrome 中删除 WWW-Authenticate?
- java - 片段上的 onCreate 总是从错误的位置开始
- python - 在 Flask 中获取特定的帖子类别
- excel - 如何将文件夹中的所有文件附加到电子邮件 - vba 代码