2012-07-04 14 views
5

का उपयोग किए बिना नई फ़ाइल बनाएं, मुझे एक नई फाइल बनाने और उपयोगकर्ता के Google ड्राइव फ़ोल्डर में नई फ़ाइल डालने से संबंधित सभी दस्तावेज प्राप्त हुए हैं उपयोगकर्ता फ़ाइल अपलोड करने और फ़ाइल को इकट्ठा करने और इसे ड्राइव में रखने के लिए पाइथन स्क्रिप्ट का उपयोग MediaFileUpload का उपयोग करते हैं।Google ड्राइव एपीआई वी 2, पायथन - नई फ़ाइल अपलोड किए बिना और Google ड्राइव यूआई

मैं अपने जीएई कोड में एक नई फाइल बनाना चाहता हूं, और उसे डाल देना चाहता हूं। उदाहरण के लिए मेरा कोड डेटाबेस को मारने के बाद एक नई एक्सएमएल स्ट्रिंग प्रस्तुत करता है, और मैं उस स्ट्रिंग को लेना चाहता हूं, इसे एक फ़ाइल बनाएं और Google ड्राइव में डाल दें।

कोई भी इस तरह से काम कर रहा है?

उत्तर

4

आपको इसके बजाय MediaInMemoryUpload का उपयोग करना चाहिए, जिसे इस सटीक उद्देश्य के लिए डिज़ाइन किया गया है। आप एक स्ट्रिंग और एक एमआईएम प्रकार पास कर सकते हैं।

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

अस्वीकृत: स्ट्रीम के लिए io.TextIOBase या StringIO के साथ MediaIoBase अपलोड करें। http://google.github.io/google-api-python-client/docs/epy/index.html – intotecho

1

निम्नलिखित कोड का उपयोग करें, सामग्री वह स्ट्रिंग है जिसे आप डालने जा रहे हैं। आपको MediaFileUpload और पायथन क्लाइंट लाइब्रेरी का उपयोग करने की आवश्यकता नहीं है।

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

यह काम करता है यदि 1. आपको मेटाडेटा, उदाहरण, विवरण, और 2. फ़ाइलों को जोड़ने की आवश्यकता नहीं है आकार में <= 2 एमबी। –

+0

हां, अगर आप मेटाडेटा जोड़ना चाहते हैं, तो कृपया इस फ़ंक्शन को कॉल करने से पहले एक नई फ़ाइल बनाने के लिए मेटाडेटा पोस्ट करें; या मेटाडेटा के साथ फ़ाइल अपलोड करने के लिए एक बहु-भाग निकाय पोस्ट करें। (लेकिन मुझे अभी तक सफलता नहीं मिली है।) – Takahiro

+0

eric.f, क्या आप यह कर रहे हैं: https://developers.google.com/drive/manage-uploads#using_multipart_upload –

संबंधित मुद्दे