वर्तमान में, मैं Google क्लाउड स्टोरेज बाल्टी पर सीधे फ़ाइल अपलोड करने के लिए @google-cloud/storage एनपीएम पैकेज का उपयोग कर रहा हूं। इसके लिए कुछ चालबाजी की आवश्यकता है क्योंकि मेरे पास केवल छवि की बेस 64 एन्कोडेड स्ट्रिंग है। मैं करने के लिए है: एक फ़ाइल के रूप में सहेजें स्ट्रिंग मैं Node.js का उपयोग कर सीधे Google क्लाउड स्टोरेज बाल्टी पर बेस 64 एन्कोडेड छवि (स्ट्रिंग) कैसे अपलोड करूं?
- डिकोड
- Google क्लाउड संग्रहण में अपलोड करने के लिए
- स्थानीय फ़ाइल हटाएं नीचे स्क्रिप्ट के लिए फ़ाइल पथ भेजें
मैं फाइल सिस्टम में फाइल को पूरी तरह से संग्रहीत करना चाहता हूं क्योंकि मैं Google ऐप इंजन का उपयोग कर रहा हूं और अगर फाइल हटाना ऑपरेशन किसी भी कारण से काम नहीं करता है तो मैं फाइल सिस्टम को छोड़ना/जंक फाइलों को छोड़ना नहीं चाहता हूं।
// Convert the base64 string back to an image to upload into the Google Cloud Storage bucket
var base64Img = require('base64-img');
var filePath = base64Img.imgSync(req.body.base64Image, 'user-uploads', 'image-name');
// Instantiate the GCP Storage instance
var gcs = require('@google-cloud/storage')(),
bucket = gcs.bucket('google-cloud-storage-bucket-name');
// Upload the image to the bucket
bucket.upload(__dirname.slice(0, -15) + filePath, {
destination: 'profile-images/576dba00c1346abe12fb502a-original.jpg',
public: true,
validation: 'md5'
}, function(error, file) {
if (error) {
sails.log.error(error);
}
return res.ok('Image uploaded');
});
वहाँ वैसे भी है सीधे बेस 64 इनकोडिंग बजाय इसे एक फाइल में कन्वर्ट और फिर पथ का उपयोग कर अपलोड करने के काम की छवि की स्ट्रिंग अपलोड करने के लिए: यह मेरा अपलोड स्क्रिप्ट अभी की तरह लग रहा है?
'bucket.upload' 'फ़ाइल को लपेटता है।createWriteStream' फ़ंक्शन, इसलिए आपको उस फ़ाइल द्वारा बनाई गई स्ट्रीम में 'base' में अपनी बेस 64 फ़ाइल स्ट्रिंग को पाइप करने की आवश्यकता होगी। मैं सिर्फ फाइल सिस्टम को लिखने और अपलोड करने के बाद अनलिंक करने की सलाह दूंगा। मुझे नहीं लगता कि आपको फ़ाइलों को हटाने में समस्या होगी। यदि आप इतने इच्छुक हैं तो मैं एक उदाहरण खींच सकता हूं। – forrestmid
@forrestmid वास्तव में एक उदाहरण की सराहना करेगा कि आप सीधे 'file.createWriteStream' को सीधे अपलोड करने के लिए कैसे कार्यान्वित करेंगे। धन्यवाद! – Nag