2011-12-21 11 views
5

के भीतर सीटू में एक ज़िप फ़ाइल बनाना मेरे पास एक कंटेनर में ब्लॉब स्टोरेज खाते में संग्रहीत फ़ाइलें हैं। मुझे पहले कंटेनर से फ़ाइलों वाले दूसरे कंटेनर में एक ज़िप फ़ाइल बनाने की आवश्यकता है।एज़ूर ब्लोब स्टोरेज

मेरे पास एक समाधान है जो एक कार्यकर्ता भूमिका और डॉटनेटजिप का उपयोग करके काम करता है, लेकिन ज़िप फ़ाइल आकार में 1 जीबी तक समाप्त हो सकती है, इसलिए मुझे चिंता है कि MemoryStream ऑब्जेक्ट्स आदि का उपयोग करके सभी कार्य प्रक्रियाओं को करने का सबसे अच्छा तरीका नहीं है। ऐसा करने का मेरी सबसे बड़ी चिंता स्मृति उपयोग और संसाधनों को मुक्त करने के लिए है कि यह प्रक्रिया दिन में कई बार हो सकती है।

using (ZipFile zipFile = new ZipFile()) 
{ 
    foreach (var uri in uriCollection) 
    { 
     var blob = new CloudBlob(uri); 

     byte[] fileBytes = blob.DownloadByteArray(); 

     using (var fileStream = new MemoryStream(fileBytes)) 
     { 
      fileStream.Seek(0, SeekOrigin.Begin); 

      byte[] bytes = CryptoHelp.EncryptAsBytes(fileStream, "password", null); 

      zipFile.AddEntry("entry name", bytes); 
     } 
    } 

    using (var zipStream = new MemoryStream()) 
    { 
     zipFile.Save(zipStream); 
     zipStream.Seek(0, SeekOrigin.Begin); 

     var blobRef = ContainerDirectory.GetBlobReference("output uri"); 
     blobRef.UploadFromStream(zipStream); 
    } 

} 

किसी को एक बेहतर दृष्टिकोण कृपया सुझाव दे सकते हैं:

नीचे बहुत कुछ नीचे कार्यकर्ता की भूमिका में बुनियादी प्रक्रिया दिखा कोड छीन है?

+0

+1। ;) – TrueWill

+0

हाँ, संसाधन उपयोग जैसे स्मृति, क्लाउड सेवाओं के भीतर सीपीयू webrole/workrole हमेशा चिंतित है। यह माना जा सकता है। +1 –

उत्तर

3

इस प्रश्न को लिखने के समय, मुझे Azure में उपलब्ध स्थानीय स्टोरेज विकल्पों से अनजान था। मैं स्थानीय स्तर पर फ़ाइलों के साथ व्यक्तिगत रूप से लिखने और उनके साथ काम लिखने में सक्षम था और फिर उन्हें वापस ब्लॉब स्टोरेज में लिख सकता था। लैटिन का उपयोग करने के लिए

+2

स्पष्टीकरण/उदाहरण का थोड़ा सा मौका? यह वास्तव में उत्तर नहीं है – stuartdotnet

+1

यहां एक उदाहरण मिला http://stackoverflow.com/a/18853179/1280068 – stuartdotnet

1

यदि आप सभी चिंतित हैं तो आपकी स्मृतिम बहुत अधिक मेमोरी ले रही है तो आप अपनी स्ट्रीम को कार्यान्वित कर सकते हैं और जैसे ही आपकी स्ट्रीम पढ़ी जा रही है, आप अपनी ज़िप फ़ाइलों को स्ट्रीम में जोड़ते हैं और पहले से ही फाइलें हटाते हैं धारा से यह आपकी मेमोरी स्ट्रीम आकार को एक फ़ाइल के आकार में रखेगा।

+0

कोई कोड नमूना? –

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