【问题标题】:How to upload files to Google Docs through Google Data API?如何通过 Google Data API 将文件上传到 Google Docs?
【发布时间】:2011-09-29 09:24:59
【问题描述】:

据我了解,我正在开发一个使用 Google API 的应用程序。

def push_to_ga(request):
    client = gdata.docs.service.DocsService()
    client.ClientLogin('account@gmail.com', 'password')

    entrys = Entry.objects.all()
    for entry in entrys:
        splitted = entry.file.split('/')
        client.UploadDocument(entry.file, splitted[-1])

    return HttpResponseRedirect('https://docs.google.com/#home')

有一个错误:

追溯: get_response 中的文件“/home/i159/Env/googleapi/lib/python2.6/site-packages/django/core/handlers/base.py” 111. 响应 = 回调(请求,*callback_args,**callback_kwargs) push_to_ga 中的文件“/home/i159/workspace/apiroot/googleapi/../googleapi/apiapp/views.py” 38. client.UploadDocument(entry.file, '我的条目#' + str(entry.id)) deprecated_function 中的文件“/home/i159/Env/googleapi/lib/python2.6/site-packages/atom/init.py” 1475. 返回 f(*args, **kwargs) UploadDocument 中的文件“/home/i159/Env/googleapi/lib/python2.6/site-packages/gdata/docs/service.py” 494. 文件夹_or_uri=文件夹_or_uri) _UploadFile 中的文件“/home/i159/Env/googleapi/lib/python2.6/site-packages/gdata/docs/service.py” 160. extra_headers={'Slug': media_source.file_name},

异常类型:/push_to_ga/ 处的 AttributeError 异常值:“unicode”对象没有属性“file_name”

我找不到包含方法描述的文档。如何通过 API 将文件上传到 Google Docs?

【问题讨论】:

    标签: python google-api


    【解决方案1】:

    您使用的是哪个版本的 Google API?

    根据Google documentation,对于版本 1.0 和 2.0,您必须将文档包装为 MediaSource 对象,以便将其传递给 Upload 方法。所以,我认为你需要更换:

    client.UploadDocument(entry.file, splitted[-1])
    

    与:

    ms = gdata.MediaSource(file_path=entry.file, content_type=gdata.docs.service.SUPPORTED_FILETYPES['DOC'])
    client.Upload(ms, splitted[-1])
    

    注意:这假设您正在上传 Word 文件。对于您上传的每个文件,您应该将content_type 参数设置为correct type

    如果您使用version 3.0,则不再需要创建 MediaSource 对象 - 您只需将路径名、标题和 mime 类型直接传递给 Upload 方法:

    client.Upload(entry.file, splitted[-1], content_type='application/msword')
    

    上传 PDF

    如果您尝试使用 API 2.0 版本上传 PDF 文件,则会失败并显示以下错误:

    {'status': 415, 'body': 'Content-Type application/pdf is not a valid input type.', 'reason': 'Unsupported Media Type'}
    

    可以使用 Google 代码网站上问题 591 中的comment 77 中显示的解决方法解决此问题。只需在您的site-packages/gdata/docs/services.py 文件中编辑_UploadFile 方法,如该票证所示。进行此更改后,PDF 上传应该可以正常工作(我已经检查过,它适用于我)。

    【讨论】:

    • @I159 我看到了您对 PDF 文件的评论,并相应地更新了我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-23
    • 2012-06-17
    • 1970-01-01
    • 2016-06-08
    • 1970-01-01
    • 2020-08-11
    相关资源
    最近更新 更多