如何使用新的python-gdata (2.0.16) 上传文档?
在使用python-gdata 2.0.14的时候,我用以下代码来创建和上传文档:
# To create a document
import gdata.docs
import gdata.docs.client
from gdata.data import MediaSource
gdClient = gdata.docs.client.DocsClient(source="my-app")
gdClient.ssl = True
gdClient.ClientLogin("login", "pa$$word", gdClient.source)
ms = MediaSource(file_path="temp.html", content_type="text/html")
entry = gdClient.Upload(ms, "document title")
print "uploaded, url is", entry.GetAlternateLink().href
还有
# To update a document
entry.title.text = "updated title"
entry = gdClient.Update(entry, media_source=ms, force=True)
print "updated, url is", entry.GetAlternateLink().href
但是,这段代码在python-gdata 2.0.16中不再有效,因为DocsClient
类已经没有了Upload
和Update
这两个功能。
我尝试使用这个
# Try to create a document
gdClient = gdata.docs.client.DocsClient(source="my-app")
gdClient.ssl = True
gdClient.ClientLogin("login", "pa$$word", gdClient.source)
ms = MediaSource(file_path="temp.html", content_type="text/html")
entry = gdata.docs.data.Resource(type=gdata.docs.data.DOCUMENT_LABEL, title="document title")
self.resource = gdClient.CreateResource(entry, media=ms)
……但是我遇到了这个错误:
gdata.client.Unauthorized: Unauthorized - Server responded with: 401, 'Token invalid'
有没有人能告诉我我哪里出错了,以及我应该如何使用这个新的API?
附注:文档还没有更新,仍然使用的是旧的代码风格。
1 个回答
1
我最近也遇到过这个问题。这个方法对我有效:
import gdata.docs.data
import gdata.docs.client
client = gdata.docs.client.DocsClient(source='your-app')
client.api_version = "3"
client.ssl = True
client.ClientLogin("your@email.com", "password", client.source)
filePath = "/path/to/file"
newResource = gdata.docs.data.Resource(filePath, "document title")
media = gdata.data.MediaSource()
media.SetFileHandle(filePath, 'mime/type')
newDocument = client.CreateResource(newResource, create_uri=gdata.docs.client.RESOURCE_UPLOAD_URI, media=media)
补充说明:我添加了需要导入的包,以免让人困惑