2012-07-04 23 views
5

Tutta la documentazione che ho trovato relativa alla creazione di un nuovo file e alla collocazione del nuovo file nella cartella di Google Drive di un utente si ottiene con l'utente che carica un file e avendo lo script python usa MediaFileUpload per raccogliere il file e inserirlo in Drive.API Google Drive V2, Python: crea un nuovo file senza caricare nuovo file e senza utilizzare l'UI di Google Drive

Voglio creare un nuovo file nel mio codice GAE e metterlo. Ad esempio il mio codice esegue il rendering di una nuova stringa XML dopo aver colpito il database e vorrei prendere quella stringa, renderla un file e inserirla in Google Drive.

Chiunque lavori con qualcosa di simile?

risposta

4

Si consiglia di utilizzare un MediaInMemoryUpload, progettato per questo scopo. Puoi passare una stringa e un tipo MIME.

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

DEPRECATED: Utilizzare MediaIoBaseUpload con io.TextIOBase o StringIO per il flusso. http://google.github.io/google-api-python-client/docs/epy/index.html – intotecho

1

Utilizzare il seguente codice, il contenuto è la stringa che si intende inserire. Non è necessario utilizzare MediaFileUpload e la libreria client 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

Che funziona se 1. non è necessario aggiungere metadati, ad esempio, descrizione e 2. con i file <= 2 MB di dimensioni. –

+0

Sì, se si desidera aggiungere metadati, si prega di postare i metadati per creare un nuovo file prima di chiamare questa funzione; o POST un corpo multiparte per caricare un file con i metadati. (ma non ho ancora avuto successo su questo.) – Takahiro

+0

eric.f, stai facendo questo: https://developers.google.com/drive/manage-uploads#using_multipart_upload –

Problemi correlati