python - 如何在没有身份验证的情况下使用 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来做到这一点。
如何将带有文件的文件发送到此代码?
解决方案
您可以通过发布一个网络应用程序以“我”(你)身份运行,并访问:“任何人,甚至匿名”。
服务器端:
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()))
笔记:
- 任何知道网络应用程序网址的人都可以上传到您的驱动器
参考:
推荐阅读
- vue.js - jest babel 插件冲突
- ruby-on-rails - 具有强大参数的 Rails 6 嵌套资源
- java - 如何在迭代此 HashSet 时将元素添加到 HashSet?
- mysql - 在同一id内的查询中高效使用Sum
- python - 在 Linux 上使用 selenium chromedriver 和 python 和 chromium
- php - 如何使用 php 脚本和 MySQL 在 Xamarin.Forms (.XAML) 中使用绑定?
- symfony - Symfony 4 集合表单
- c# - 单线程工作和多线程不工作
- azure - 想要使用客户端证书将文件推送到 Azure 存储以进行身份验证
- jenkins - 詹金斯管道卡在构建上