Какую версию Google API вы используете?
Согласно документации Google , для версий 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
правильный тип для каждого загружаемого файла.
Если вы используете версию 3.0 , вам больше не нужно создавать объект MediaSource - вы можете просто передать имя пути, заголовок и тип mime напрямую в метод Upload:
client.Upload(entry.file, splitted[-1], content_type='application/msword')
Загрузка файлов PDF
Если вы попытаетесь загрузить файлы PDF с помощью API версии 2.0, произойдет сбой с ошибкой:
{'status': 415, 'body': 'Content-Type application/pdf is not a valid input type.', 'reason': 'Unsupported Media Type'}
Это можно исправить с помощью обходного пути, показанного в комментарии 77 к проблеме 591 на сайте Google Code. Просто отредактируйте метод _UploadFile
в файле site-packages/gdata/docs/services.py
, как показано на этом билете. После того как вы внесли это изменение, загрузка PDF должна работать нормально (я проверил это, и у меня это работает).