Ошибки загрузки файлов Google Drive api v3 через python

#python #google-api #google-drive-api #google-api-python-client

#python #google-api #google-drive-api #google-api-python-client

Вопрос:

Я пытался загрузить возобновляемую загрузку файлов на Google api Drive в соответствии с документацией из https://developers.google.com/drive/api/v3/manage-uploads#python_1 . Ниже приведен пример кода, я застрял в текущей ситуации.

 SCOPES = ['https://www.googleapis.com/auth/drive','https://www.googleapis.com/auth/drive.file','https://www.googleapis.com/auth/drive.appdata']
credentials = ServiceAccountCredentials.from_json_keyfile_name('json-file', SCOPES)
http=Http()
http.redirect_codes = http.redirect_codes - {308}
http_auth = credentials.authorize(http)
drive_service = build('drive', 'v3', http=http_auth,cache_discovery=False)

parent_id="folder-id"
source='/root/test.tar'
target='test.tar'
file_metadata = {'name': target, 'parents': [parent_id], 'mimeType': 'application/vnd.google-apps.file'}
media = MediaFileUpload(source,mimetype='application/vnd.google-apps.file',chunksize=1024*1024,resumable=True)
putfile=drive_service.files().create(body=file_metadata,media_body=media,fields='id').execute()
dest_id=putfile.get('id')
  

Эти строки содержат следующие ошибки. Я понятия не имею об этом.

вызовите HTTPError(соответственно, content, uri=self.uri) googleapiclient.errors.HTTPError:fields=idamp; alt=jsonamp;uploadType=возобновляемый возвращенный «Неверный запрос»>

Интересно, что вызывает эту проблему?

Ответ №1:

Вам не хватает размера фрагмента.

 parent_id = "folder-id"
source = '/root/test.tar'
target = 'test.tar'
file_metadata = {'name': target, 'parents': [parent_id], 
                 'mimeType': 'application/vnd.google-apps.file'}
media = MediaFileUpload(source, mimetype='application/vnd.google-apps.file', 
             chunksize=1024*1024, resumable=True)
putfile = drive_service.files().create(body=file_metadata,
                         media_body=media,fields='id').execute()
dest_id = putfile.get('id')
  

Комментарии:

1. Если вы получаете другую ошибку, вы можете открыть новый вопрос.

2. Я вернулся к первоначальной проблеме. googleapiclient.ошибки. HTTPError :