2012-05-04 10 views
9

मैं कोर सेवा का उपयोग करके एसडीएल ट्रिडियन 2011 में पीडीएफ, वर्ड और एक्सेल फ़ाइलों को धक्का देना चाहता हूं।मैं कोर सेवा का उपयोग कर एसडीएल ट्रिडियन 2011 में बाहरी फाइलों को कैसे आयात कर सकता हूं?

मैं नीचे दिए गए कोड की कोशिश की लेकिन यह त्रुटि प्राप्त:

Invalid value for property 'BinaryContent'. Unable to open uploaded file:

using (ChannelFactory<ISessionAwareCoreService> factory = 
    new ChannelFactory<ISessionAwareCoreService>("wsHttp_2011")) 
{ 
    ISessionAwareCoreService client = factory.CreateChannel(); 
    ComponentData multimediaComponent = (ComponentData)client.GetDefaultData(
             ItemType.Component, "tcm:19-483-2"); 
    multimediaComponent.Title = "MultimediaFile"; 

    multimediaComponent.ComponentType = ComponentType.Multimedia; 
    multimediaComponent.Schema.IdRef = "tcm:19-2327-8"; 

    using (StreamUploadClient streamClient = new StreamUploadClient()) 
    { 
    FileStream objfilestream = new FileStream(@"\My Documents\My Poc\images.jpg", 
               FileMode.Open, FileAccess.Read); 
    string tempLocation = streamClient.UploadBinaryContent("images.jpg", 
                  objfilestream); 
    } 
    BinaryContentData binaryContent = new BinaryContentData(); 
    binaryContent.UploadFromFile = @"C:\Documents and Settings\My Poc\images.jpg"; 
    binaryContent.Filename = "images.jpg"; 
    binaryContent.MultimediaType = new LinkToMultimediaTypeData() 
    { 
    IdRef ="tcm:0-2-65544" 
    }; 
    multimediaComponent.BinaryContent = binaryContent; 

    IdentifiableObjectData savedComponent = client.Save(multimediaComponent, 
                 new ReadOptions()); 

    client.CheckIn(savedComponent.Id, null); 
    Response.Write(savedComponent.Id); 
}  

उत्तर

5

रयान के उत्कृष्ट लेख यहां http://blog.building-blocks.com/uploading-images-using-the-core-service-in-sdl-tridion-2011

सभी बाइनरी फ़ाइलें उसी तरह नियंत्रित किया जाता है की एक पढ़ा है - तो छवियों के लिए उनकी तकनीक दस्तावेजों के लिए समान रूप से मान्य होगा, बस सुनिश्चित करें कि आप उपयुक्त माइम प्रकारों के साथ स्कीमा का उपयोग करें।

+0

@ क्रिस। मैंने उस कोड को आजमाया लेकिन एक त्रुटि मिली। बाइनरी सामग्री। मल्टीमीडिया टाइप = नया लिंकटो मल्टीमीडिया टाइप टाइप() {आईडीआरफ = आईडी}; मैं एक jpg फ़ाइल की कोशिश कर रहा हूं क्या आप मुझे यह आईडी कैसे प्राप्त कर सकते हैं? मेरे प्रोजेक्ट में कोई ऐप.कॉन्फिग नहीं है अग्रिम – Aquarius24

+0

में धन्यवाद शायद आप अपने प्रश्न को अपडेट कर सकते हैं कि आपने क्या किया है, अपना कोड दिखाएं, और जो त्रुटि आप प्राप्त कर रहे हैं उसे साझा करें। एक और नोट पर - क्या आप http://area51.stackexchange.com/proposals/38335/tridion?referrer=eo63snjNlUWNn9xqeeO2NA2 पर काम करने पर विचार करेंगे, हम स्टैक एक्सचेंज पर एक समर्पित एसडीएल ट्रिडियन क्षेत्र प्राप्त करने की कोशिश कर रहे हैं। कृपया अपने एसओ खाते का उपयोग करें ताकि आपके महान प्रश्न यहां –

+0

प्रस्ताव की ओर गिनती हो जाएं: संपत्ति 'बाइनरी सामग्री' के लिए अमान्य मान। अपलोड की गई फ़ाइल को खोलने में असमर्थ – Aquarius24

4

की प्रमुख सेवा का उपयोग कर Tridion में बाइनरी अपलोड करने के लिए प्रक्रिया है:

  1. एक StreamUploadClient का उपयोग कर Tridion सर्वर से बाइनरी डेटा अपलोड करें। यह आपको ट्रिडियन सर्वर पर फ़ाइल का पथ देता है।
  2. एक BinaryContentData कि Tridion सर्वर पर फ़ाइल को इंगित करता है एक ComponentData कि चरण 2
  3. सहेजें ComponentData
  4. से BinaryContentData को संदर्भित करता है बनाएं
  5. (ताकि पथ के साथ आप चरण 1 से वापस मिल) बनाएं

आप कदम 2.

binaryContent.UploadFromFile = @"C:\Documents and Settings\My Poc\images.jpg"; 

में अपनी फ़ाइल के लिए स्थानीय पथ सेट कर रहे हैं लेकिन Tridion में सक्षम नहीं होगा उस फाइल को वहां ढूंढने के लिए।

string tempLocation; 
using (StreamUploadClient streamClient = new StreamUploadClient()) 
{ 
    FileStream objfilestream = new FileStream(@"\My Documents\My Poc\images.jpg", 
              FileMode.Open, FileAccess.Read); 
    tempLocation = streamClient.UploadBinaryContent("images.jpg", objfilestream); 
} 
BinaryContentData binaryContent = new BinaryContentData(); 
binaryContent.UploadFromFile = tempLocation; 

ध्यान दें कि Ryan's original code ठीक करता है: आप के बजाय रास्ता है कि आप UploadBinaryContent से वापस मिल स्थापित करना चाहिए।

+0

@ पुफ। बहुत बहुत धन्यवाद। इससे मुझे बहुत मदद मिली और मैं अब किसी भी फ़ाइल को अपलोड करने में सक्षम हूं – Aquarius24

+0

@ फ्रैंक: क्या ऐप.कॉन्फिग मेरी स्थानीय मशीन से कोर सेवा का उपयोग कर मल्टीमीडिया घटकों को बनाने के लिए अनिवार्य है? मेरा मतलब है (सभी छवियां मेरी स्थानीय मशीन में हैं)।और जब मैं सर्वर में हैं, तो मैं मूल सेवा का उपयोग कर मल्टीमीडिया घटक बनाने में सक्षम हूं। लेकिन मैं अपने स्थानीय से इसकी अपेक्षा कर रहा हूं। – user1428019

+0

प्रत्येक कोर सेवा क्लाइंट को निर्देश दिया जाना चाहिए कि कैसे एक .config फ़ाइल के माध्यम से, ट्रिडियन सामग्री प्रबंधक से कनेक्ट करें (http://code.google.com/p/tridion-practice/wiki/GetCoreServiceClientWithConfigFile देखें) या इसी तरह की सेटिंग्स के माध्यम से कोड (http://code.google.com/p/tridion-practice/wiki/GetCoreServiceClientWithoutConfigFile देखें)। –

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