首页 > 解决方案 > 如何在没有身份验证的情况下使用 python 上传到谷歌驱动器?

问题描述

我想使用 Google Script 和 Python 将文件上传到 Google Drive。

我不想使用 API 执行此操作,因为它使用 JSON 文件并请求 Google 帐户的密码。

我想从没有 JSON 文件且不请求谷歌帐户的 Python 文件发送。

我想在谷歌脚本中创建一个脚本,将文件上传到网站。

我找到了如何用 html 做到这一点:

function saveFile(data,name,folderName) { 
   var contentType = data.substring(5,data.indexOf(';'));

   var file = Utilities.newBlob(
     Utilities.base64Decode(data.substr(data.indexOf('base64,')+7)), 
     contentType, 
     name
   ); //does the uploading of the files
   DriveApp.getFolderById(childFolderIdA).createFile(file);
}

但是我没有找到如何用python来做到这一点。

如何将带有文件的文件发送到此代码?

标签: pythongoogle-apps-scriptweb-applicationsgoogle-drive-api

解决方案


您可以通过发布一个网络应用程序以“我”(你)身份运行,并访问:“任何人,甚至匿名”。

服务器端:

function doPost(e){
  const FOLDER_ID = '###FOLDER_ID###';
  var name = e.parameter.name;
  saveFile(e.postData.contents,name,FOLDER_ID);
  return 'Success';
}

function saveFile(data,name,id) { 
    data = Utilities.newBlob(Utilities.base64DecodeWebSafe(data));
    DriveApp.getFolderById(id)
    .createFile(data.setName(name))
}

客户端:

import requests, base64
url = '###WEB_APP_PUBLISHED_URL###'
name = '###FILENAME###'
requests.post(url+'?name='+name,data=base64.urlsafe_b64encode(open('##UPLOAD FILE PATH##','rb').read()))

笔记:

  • 任何知道网络应用程序网址的人都可以上传到您的驱动器

参考:


推荐阅读