2012-07-04 35 views
5

Toda la documentación que he encontrado relacionada con la creación de un nuevo archivo y el nuevo archivo en la carpeta de Google Drive de un usuario se logra con usuario cargando un archivo y haciendo que el script python use MediaFileUpload para reunir el archivo y ponerlo en Drive.Google Drive API V2, Python: cree un archivo nuevo sin cargar un archivo nuevo y sin usar la IU de Google Drive

Quiero crear un nuevo archivo en mi código GAE, y poner eso. Por ejemplo, mi código representa una nueva cadena XML después de tocar la base de datos, y me gustaría tomar esa cadena, convertirla en un archivo y colocarla en Google Drive.

¿Alguien que trabaja con algo como esto?

Respuesta

4

En su lugar, debe utilizar MediaInMemoryUpload, que está diseñado para este propósito. Puede pasar una cadena y un tipo MIME.

media = MediaInMemoryUpload('some data', 'text/plain') 
+0

DEPRECATED: Use MediaIoBaseUpload con io.TextIOBase o StringIO para la transmisión. http://google.github.io/google-api-python-client/docs/epy/index.html – intotecho

1

Usa el siguiente código, el contenido es la cadena que vas a poner. No tiene que usar MediaFileUpload y la biblioteca de cliente python.

def update(content, file_id): 
    url = 'https://www.googleapis.com/upload/drive/v2/files/%s?uploadType=media' % file_id 
    headers = { 
     'Content-Type': 'text/plain', 
     'Content-Length': str(len(content)), 
     'Authorization': 'Bearer <oauth2 token>' 
     } 
    response = urlfetch.fetch(url, payload=content, method='PUT', headers=headers) 
    assert response.status_code == 200 
    return response.content 
+0

Eso funciona si 1. no necesita agregar metadatos, por ejemplo, descripción, y 2. con archivos <= 2MB de tamaño –

+0

Sí, si desea agregar metadatos, envíe un metadato para crear un nuevo archivo antes de llamar a esta función; o POST un cuerpo de varias partes para cargar un archivo con metadatos. (pero todavía no he tenido éxito). – Takahiro

+0

eric.f, ¿estás haciendo esto ?: https://developers.google.com/drive/manage-uploads#using_multipart_upload –

Cuestiones relacionadas