2011-07-13 16 views
5

Estoy intentando cargar un archivo de copia de seguridad de mi servidor a mi almacenamiento de Google en un script Python. El archivo de respaldo es un archivo zip encriptado (archivo gpg). Se conecta con éxito, pero falla la transferencia del archivo, que el siguiente error:cargue un archivo en Google Docs a través de una secuencia de comandos de Python

Traceback (most recent call last): 
    File "backup.py", line 37, in <module> 
    entry = gd_client.Upload(ms, 'Backup.gpg', folder_or_uri=uri) 
    File "/usr/local/lib/python2.6/dist-packages/gdata/docs/service.py", line 306, in Upload 
    folder_or_uri) 
    File "/usr/local/lib/python2.6/dist-packages/gdata/docs/service.py", line 161, in _UploadFile 
    converter=gdata.docs.DocumentListEntryFromString) 
    File "/usr/local/lib/python2.6/dist-packages/gdata/service.py", line 1236, in Post 
    media_source=media_source, converter=converter) 
    File "/usr/local/lib/python2.6/dist-packages/gdata/service.py", line 1358, in PostOrPut 
    'reason': server_response.reason, 'body': result_body} 
gdata.service.RequestError: {'status': 400, 'body': 'Invalid request URI', 'reason': 'Bad Request'} 

Aquí está mi código:

import os 
import sys 
import gdata.docs 
import gdata.docs.service 
import gdata.docs.client 

gd_client = gdata.docs.service.DocsService() 
gd_client.ClientLogin('[email protected]', 'mypassword') 

uri = '%s?convert=false' % gdata.docs.client.DOCLIST_FEED_URI 

f = open('backup.zip.gpg') 
ms = gdata.MediaSource(file_handle=f, content_type='application/octet-stream', content_length=os.path.getsize(f.name)) 
entry = gd_client.Upload(ms, 'Backup.gpg', folder_or_uri=uri) 

Es posible que el archivo es demasiado grande (56MB), y yo puedo' t usar el almacenamiento de Google Docs de esta manera. Sin embargo, espero un mensaje de error más explícito si este fuera el caso. Me pregunto si es un problema cuando digo 'convert = false'. Es una cuenta de Google Apps que estoy usando.

+1

Si usted piensa que el problema es de tamaño es demasiado grande, ¿por qué no tratar de romper el archivo zip en partes más pequeñas, dicen 5mb, archivos y luego intentar subirlos? –

+0

Lamentablemente, esto todavía produjo el mismo error – Dan

+1

¿Es esta una cuenta de Google Apps ** for Business **? – serk

Respuesta

2

Cargando archivos de cualquier tipo solo se permiten para Google Apps para cuentas comerciales. Una cuenta normal no puede cargar este tipo de archivo. Consulte this link desde la API de Google Docs.

2

Buenas noticias: ahora Google Apps para Las cuentas gratuitas también pueden cargar archivos de cualquier tipo.

Tres puntos claves aquí:

Para ver un ejemplo en python, vaya a descargar gdata-2.0.14 y encuentre resumable_upload_sample.py en el directorio samples/docs.

Cuestiones relacionadas