Python请求Google Drive
我正在尝试使用Python的requests库将一个文件发送到Google Drive的API。根据谷歌的文档,我只需要发送一个多部分请求。具体的文档可以在这里找到:https://developers.google.com/drive/web/manage-uploads#multipart。我需要先发送一些元数据,然后再发送文件。以下是我目前尝试的代码:
def upload_csv(self, file, description):
self.refresh()
url = self.url+'?uploadType=multipart&' + urllib.urlencode({'key':self.api_key})
headers = { 'Authorization':'Bearer {}'.format(self.access_token),
# 'content-type':'multipart/related',
# 'content-length':size
}
data = {'title':file,'description':description }
files = {'file':(file,open(file,'rb'),'text/csv')}
response = requests.post( url, headers = headers, data = data, files = files )
但是我收到了一个错误:u'错误的内容类型。请使用multipart。有没有办法用requests同时发送元数据和文件呢?
1 个回答
4
我找到了一个解决办法。问题是谷歌希望元数据和文件放在一起。
def upload_csv(self, file, description):
self.refresh()
url = self.url+'?uploadType=multipart&convert=true' + urllib.urlencode({'key':self.api_key})
headers = { 'Authorization':'Bearer {}'.format(self.access_token) }
class DataDict(dict):
def read(self):
return str( self )
data = ('metadata',DataDict(title = file,description = description),'application/json; charset=UTF-8')
file = (file,open(file,'rb'),'text/csv')
files = {'data':data, 'file':file }
response = requests.post( url, headers = headers, files = files )
return respone