2013-10-02 20 views
12

पर एक ऐप इंजन ब्लॉकी डीकोड करें मेरे पास ब्लॉबकेज़ से भरा डेटाबेस है जो पहले मानक Google App Engine create_upload_url() प्रक्रिया के माध्यम से अपलोड किया गया था, और प्रत्येक अपलोड एक ही Google क्लाउड स्टोरेज बाल्टी पर चला गया gs_bucket_name तर्क स्थापित करना।Google क्लाउड स्टोरेज फ़ाइल नाम

मैं जो करना चाहता हूं वह मौजूदा ब्लॉबकी को डीकोड करने में सक्षम है ताकि मैं अपना Google क्लाउड स्टोरेज फ़ाइल नाम प्राप्त कर सकूं। मैं समझता हूँ कि मैं FileInfo class से gs_object_name संपत्ति का उपयोग कर, सिवाय हो सकता था:

आप अपने अपलोड हैंडलर या इस डेटा खो जाएगा में अपने आप को gs_object_name सहेजना होगा। (GCS में वस्तु के लिए अन्य मेटाडाटा स्वतः GCS में संग्रहीत किया जाता है, तो आप को बचाने के लिए जो आपके अपलोड हैंडलर में जरूरत नहीं है।

gs_object_name संपत्ति मतलब अपलोड हैंडलर में ही उपलब्ध है, और अगर मैं एक नहीं तो अपने खोए हुए उस समय यह बचत किया गया है।

इसके अलावा, create_gs_key() चाल नहीं करता है, क्योंकि यह बजाय एक गूगल भंडारण फ़ाइल नाम लेता है और एक blobkey पैदा करता है।

तो, मैं कैसे ले जा सकते हैं ब्लॉबी जिसे पहले ऐप इंजन के माध्यम से Google क्लाउड स्टोरेज बाल्टी पर अपलोड किया गया था, और इसे Google सी प्राप्त करें जोर से भंडारण फ़ाइल नाम? (पायथन)

+0

मेरे ज्ञान के लिए आप केवल ब्लॉब को फिर से लिख सकते हैं, इसका अर्थ यह है कि इसे बाइट द्वारा बाइट पढ़ना और क्लाउडस्टोरेज फ़ाइल को फिर से लिखने के समान क्लाउडस्टोरेज में लिखना, लेकिन इस बार ब्लॉबीकी के बजाय क्लाउडस्टोरेज पथ को सहेजना। क्लाउडस्टॉरेज ऑब्जेक्ट्स को सहेजने वाले BlobKeys "बंदरगाह" स्थिति में प्रतीत होते हैं। http: // stackoverflow।कॉम/प्रश्न/18697418/प्रोग्रामेटिकली-एमुलेटिंग-जीएसयूटीआईएल-एमवी-ऑन-एपेंगेन-क्लाउडस्टोरेज-इन-पायथन – cat

उत्तर

6

आप केवल अपलोड हैंडलर (fileInfo.gs_object_name) में cloudstorage फ़ाइल नाम हो जाते हैं और अपने डेटाबेस में संग्रहीत कर सकते हैं। उसके बाद यह खो जाता है और ऐसा लगता है कि यह BlobInfo या अन्य मेटाडेटा संरचनाओं में संरक्षित नहीं है।

Google का कहना है: ब्लॉबइन्फो मेटाडाटा फ़ाइलइन्फो मेटाडाटा के विपरीत डेटास्टोर तक जारी नहीं है। (कोई ब्लॉब कुंजी नहीं है, लेकिन आप बना सकते हैं यदि create_gs_key को कॉल करके आवश्यक हो तो उसे बनाएं।) आपको अपने अपलोड हैंडलर में gs_object_name स्वयं को सहेजना होगा या यह डेटा खो जाएगा।

https://developers.google.com/appengine/docs/python/blobstore/fileinfoclass

अपडेट: "encoded_gs_file: base64 एनकोडेड-filename-यहाँ" मैं Blobstore-व्यूअर में एक एसडीके-BlobKey को डिकोड करने में सक्षम था। हालांकि असली बात बेस 64 एन्कोडेड नहीं है।

create_gs_key (फ़ाइल नाम, आरपीसी = कोई नहीं) ... Google कहता है: "स्ट्रिंग के रूप में एन्क्रिप्टेड ब्लॉब कुंजी देता है।" क्या किसी के पास अनुमान है कि यह एन्क्रिप्ट क्यों किया गया है?

+0

शायद एन्क्रिप्टेड क्योंकि इसमें एक्सेस टोकन शामिल है। –

2

दस्तावेज़ों में बयान से, ऐसा लगता है कि जेनरेट किए गए जीसीएस फ़ाइल नाम खो गए हैं। मैन्युअल रूप से अपनी बाल्टी ब्राउज़ करने के लिए आपको gsutil का उपयोग करना होगा।

https://developers.google.com/storage/docs/gsutil/commands/ls

0

यदि आपके पास ब्लॉबके हैं तो आप इसका उपयोग कर सकते हैं: ImagesServiceFactory। makeImageFromBlob

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