You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用MIT App Inventor II将图片上传到Google Drive

问题排查与解决步骤

1 先修正Google App Script代码的显性错误

原代码存在调用方法错误:你传入的是文件夹ID,却调用了读取文件的getFileById方法,会直接抛出异常,修正后的代码如下:

function doPost(e) {
  var data = Utilities.base64Decode(e.parameters.data);
  var blob = Utilities.newBlob(data,e.parameters.mimetype,e.parameters.filename);
  // 注意这里把getFileById改成getFolderById,因为参数是文件夹ID
  var folderid = Utilities.base64Decode(e.parameters.folderid);
  DriveApp.getFolderById(folderid).createFile(blob);
  return ContentService.createTextOutput("Your File Successfuly Uploaded");
}

2 Google App Script端配置排查

  • 部署设置必须符合要求:部署时执行身份选择你自己的谷歌账号,访问权限设置为任何人,甚至匿名用户,否则App Inventor的请求会被权限拦截
  • 每次修改代码后必须重新部署新版本,且复制的是新部署生成的Web App URL,不是脚本编辑页的URL
  • 确认folderid的编码逻辑:代码中对folderid做了base64解码,必须保证App Inventor端传的folderid是提前做过base64编码的内容,如果直接传明文文件夹ID,解码后会得到乱码,无法匹配到目标文件夹
  • 确认部署脚本的谷歌账号对目标文件夹拥有编辑权限

3 MIT App Inventor端配置排查

  • 确认base64扩展输出的是无多余前缀的纯base64编码,部分扩展输出会自带data:image/xxx;base64,前缀,直接传入GAS解码会生成无效的Blob文件
  • 确认Web1组件的请求方式设置为POST,传递的参数名data、mimetype、filename、folderid的拼写、大小写和GAS代码完全一致
  • 确认应用已经申请了本地存储读取权限,否则无法正常读取选中的图片文件
  • 增加调试逻辑:在Web1组件的GotText事件中弹窗显示返回值,在ErrorOccurred事件中弹窗显示错误信息,可直接定位是服务端报错还是网络/参数问题

4 交叉验证方法

先跳过App Inventor,用接口测试工具模拟POST请求调用GAS的Web App链接,传入构造好的测试参数,确认GAS端可以正常生成文件后,再调试App Inventor端的参数传递逻辑即可。


内容的提问来源于stack exchange,提问作者LookForward Chuang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 05:36:03