2012-01-23 6 views
5

यहां मैंने जो कोशिश की है और यह काम नहीं कर रहा है। मुझे कोई त्रुटि नहीं मिलती है, लेकिन ऐसा लगता है कि फ़ाइल को मीडिया लाइब्रेरी में भी जोड़ना प्रतीत नहीं होता है।एएसपी फ़ाइल अपलोड नियंत्रण का उपयोग कर कोड में साइटकोर मीडिया लाइब्रेरी में फ़ाइल कैसे अपलोड कर सकता हूं?

using(new Sitecore.SecurityModel.SecurityDisabler()) 
{ 
    if(myFileControl.HasFile) 
    { 
    MediaCreatorOptions _options = new MediaCreatorOptions(); 
    _options.Database = Factory.GetDatabase("master"); 
    _options.FileBased = false; 
    _options.IncludeExtensionInItemName = false; 
    _options.KeepExisting = false; 
    _options.Versioned = false; 
    _options.Destination = "/sitecore/media library"; 
    MediaItem _newFile = MediaManager.Creator.CreateFromStream(myFileControl.FileContent, myFileControl.FileName, _options); 
    } 
} 

मेरा सबसे बड़ा मुद्दा यह है कि मैं वास्तव में समझ नहीं पा रहा हूं कि कुछ अलग-अलग पैरामीटर और गुण क्या करते हैं। MediaCreatorOptions के लिए "गंतव्य" संपत्ति क्या है? क्या यह सिर्फ एक फ़ोल्डर होना चाहिए? क्या यह आइटम का नाम भी होना चाहिए? CreateFromStream विधि के लिए तीन पैरामीटर क्या हैं? पहला वाला स्ट्रीम लगता है - मुझे वह मिलता है। लेकिन दूसरा "फाइलनाम" कहता था। यह क्या होना चाहिए? अगर मैं स्ट्रीम से बना रहा हूं तो मुझे साइटकोर फ़ाइल नाम को बताने की ज़रूरत क्यों है?

किसी भी मदद की सराहना की जाएगी।

उत्तर

4

मुझे लगता है कि आपकी समस्या यह है कि आप साइटकोर एपीआई कॉल के लिए उचित विकल्प का उपयोग नहीं कर रहे हैं। आपके पास असली गंतव्य नहीं है .. यह वह जगह है जहां आप साइटकोर आइटम निर्दिष्ट करेंगे जो आपकी वस्तु बन जाएगा ... केवल एक फ़ोल्डर नहीं। ऐसा लगता है कि आप मीडिया लाइब्रेरी आइटम बनाने की कोशिश कर रहे हैं।

प्रति एसडीएन पर सामग्री API बुक

:

कैसे एपीआई

का उपयोग करते हुए मीडिया आइटम बनाने के लिए

आप बनाने के लिए Sitecore.Resources.Media.MediaCreator और Sitecore.Resources.Media.MediaCreatorOptions कक्षाओं का उपयोग कर सकते फाइलों से मीडिया आइटम। उदाहरण के लिए, मीडिया आइटम बनाने के लिए/Sitecore/मीडिया लाइब्रेरी/images/फ़ाइल सी से मास्टर डेटाबेस में नमूना: \ अस्थायी \ sample.jpg:

Sitecore.Resources.Media.MediaCreatorOptions options = new Sitecore.Resources.Media.MediaCreatorOptions(); 
options.Database = Sitecore.Configuration.Factory.GetDatabase("master"); 
options.Language = Sitecore.Globalization.Language.Parse(Sitecore.Configuration.Settings.DefaultLanguage); 
options.Versioned = Sitecore.Configuration.Settings.Media.UploadAsVersionableByDefault; 
options.Destination = "/sitecore/media library/images/Sample"; 
options.FileBased = Sitecore.Configuration.Settings.Media.UploadAsFiles; 
Sitecore.Resources.Media.MediaCreator creator = new Sitecore.Resources.Media.MediaCreator(); 
Sitecore.Data.Items.MediaItem sample = creator.CreateFromFile(@"C:\temp\sample.jpg",options) 
2

कोरी, मैं अगर यकीन नहीं है यह अभी भी प्रासंगिक है, लेकिन मैंने आपके द्वारा किए गए सटीक प्रश्नों में भाग लिया। @divamatrix वास्तव में स्ट्रीम सवालों का जवाब नहीं दे रहा था और अगर मैं किसी और (या फिर खुद को) जवाबों की आवश्यकता है तो मैं इस प्रश्न को भरना चाहता हूं।

MediaCreatorOptions के लिए "गंतव्य" संपत्ति क्या है?

रूप @divamatrix ने कहा, MediaCreatorOptions में Destination संपत्ति जहां Sitecore मीडिया लाइब्रेरी में रहने के लिए अपने MediaItem चाहते हैं (उदा।/Sitecore/मीडिया लाइब्रेरी/images/निर्मित छवि)

क्या यह सिर्फ एक फ़ोल्डर होना चाहिए? क्या यह आइटम का नाम भी होना चाहिए?

नहीं, यह वर्तमान में मीडिया लाइब्रेरी में मौजूद फ़ोल्डर का नाम नहीं होना चाहिए। यह उस आइटम का पथ होना चाहिए जिसे आप बनाना चाहते हैं, जिसमें आप जिस आइटम को बनाना चाहते हैं उसका नाम शामिल है (ऊपर देखें)।

CreateFromStream विधि के लिए तीन पैरामीटर क्या हैं? पहला वाला स्ट्रीम लगता है - मुझे वह मिलता है। लेकिन दूसरा "फाइलनाम" कहता था। यह क्या होना चाहिए? अगर मैं स्ट्रीम से बना रहा हूं तो मुझे साइटकोर फ़ाइल नाम को बताने की ज़रूरत क्यों है?

फ़ाइल नाम यदि आप MediaCreatorOptions साथ Destination सेट नजरअंदाज कर दिया है क्योंकि GetItemPath विधि सिर्फ options.Destination वापस आ जाएगी, तो शून्य या रिक्त नहीं। यदि आप Destination सेट नहीं करते हैं, तो GetItemPath विधि आपको मीडिया लाइब्रेरी में उचित पथ देने के लिए सबसे अच्छा प्रयास करेगी। संक्षेप में, CreateFromStream का उपयोग करते समय (जहां तक ​​मैं कह सकता हूं), MediaCreatorOptions पर सेट करें, या filePath सेट करें जहां आप अपनी वस्तु को रखना चाहते हैं और GetItemPath विधि इसे वहां रखने का प्रयास करेगी, लेकिन अपवाद फेंक सकती है यह करने में असमर्थ है।

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