2012-12-10 22 views
10

के साथ Google ड्राइव पर बड़ी फ़ाइल अपलोड करें मैं बड़ी फ़ाइल अपलोड करने के लिए अपने PHP क्लाइंट लाइब्रेरी के माध्यम से Google ड्राइव API का उपयोग करने का प्रयास कर रहा हूं। वर्तमान में यह विफल रहता है क्योंकि प्रतीत होता है कि एकमात्र विधि "सरल" अपलोड विधि है। दुर्भाग्य से आपको पूरी फ़ाइल को डेटा के रूप में लोड करने की आवश्यकता है और यह मेरी PHP स्मृति सीमा को हिट करता है। मैं जानना चाहता हूं कि यह संभव है और यह कैसे किया जाता है इसका एक उदाहरण देखें। मुझे पता है कि पुनः शुरू करने योग्य और चुने हुए अपलोड के लिए एक तरीका है, लेकिन इसका उपयोग करने के तरीके पर कोई दस्तावेज नहीं है।PHP क्लाइंट लाइब्रेरी

<?php 
require_once 'google-api-php-client/src/Google_Client.php'; 
require_once 'google-api-php-client/src/contrib/Google_DriveService.php'; 

$client = new Google_Client(); 
// Get your credentials from the APIs Console 
$client->setClientId('YOUR_CLIENT_ID'); 
$client->setClientSecret('YOUR_CLIENT_SECRET'); 
$client->setRedirectUri('urn:ietf:wg:oauth:2.0:oob'); 
$client->setScopes(array('https://www.googleapis.com/auth/drive')); 

$service = new Google_DriveService($client); 

$authUrl = $client->createAuthUrl(); 

//Request authorization 
print "Please visit:\n$authUrl\n\n"; 
print "Please enter the auth code:\n"; 
$authCode = trim(fgets(STDIN)); 

// Exchange authorization code for access token 
$accessToken = $client->authenticate($authCode); 
$client->setAccessToken($accessToken); 

//Insert a file 
$file = new Google_DriveFile(); 
$file->setTitle('My document'); 
$file->setDescription('A test document'); 
$file->setMimeType('text/plain'); 

$data = file_get_contents('document.txt'); 

$createdFile = $service->files->insert($file, array(
     'data' => $data, 
     'mimeType' => 'text/plain', 
    )); 

print_r($createdFile); 
?> 
+0

बड़े एक रिश्तेदार शब्द है। क्या यह 10 एमबी है? 1GB? 10GB? –

+0

सवाल का जवाब देने के लिए कोई फर्क नहीं पड़ता। लेकिन एक 10 एमबी फ़ाइल समाधान की आवश्यकता के लिए काफी बड़ी है ... एक 5 एमबी आमतौर पर "सरल" अपलोड विफल हो जाता है। मुझे आमतौर पर 50 एमबी और 1 जीबी के बीच फ़ाइलों को अपलोड करने की आवश्यकता है। – pathfinder

+3

मुझे एक ही समस्या थी जब तक कि मुझे एक मल्टीपार्ट (पुनः शुरू करने योग्य) अपलोड के लिए कोड नहीं मिला, इस उत्तर पर दिखाया गया: http://stackoverflow.com/a/14693917/1060686। यह आपको सामान्य स्क्रिप्ट मेमोरी बाधाओं के भीतर बड़ी फ़ाइलों को अपलोड करने की अनुमति दे सकता है (यदि आप रुचि रखते हैं तो आप डाउनलोड के लिए एक ही विधि का उपयोग कर सकते हैं। साथ ही, सुनिश्चित करें कि आप PHP क्लाइंट एपीआई के अंतिम संस्करण का उपयोग कर रहे हैं [https: // code.google.com/p/google-api-php-client/source/checkout] और $ apiConfig ['use_objects'] config.php पर गलत पर सेट है) [1]: [2]: – NotGaeL

उत्तर

0

ऐसा लगता है कि यह पहले से ही उत्तर दिया गया है? एक धारा के रूप में फ़ाइल, एक समय में एक टुकड़ा पढ़ें और एक बफर करने के लिए कि जोड़ें/यह सीधे सॉकेट पर लिखें:

Google Drive API - PHP Client Library - setting uploadType to resumable upload

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