2sxc मॉड्यूल में सही ढंग से इकाई क्षेत्र में ADAM के साथ अपलोड की गई फ़ाइल को कैसे बांधें?
मुझे प्रोग्राम ऑब्जेक्ट को प्रोग्राम बनाने और डेटा के साथ भरने की आवश्यकता है। एक फ़ील्ड को फ़ाइल प्रकार का होना चाहिए। इसलिए मैं कोड के इस नमूने का उपयोग करके ADAM में फ़ाइल अपलोड किए बिना फ़ाइल बनाने में कामयाब रहा । हालाँकि ऐसा लगता है कि मैंने इसे बाइंड नहीं किया था क्योंकि फ़ाइल मैन्युअल रूप से अपलोड किए जाने पर इसे बाइंड किया जाता है। जब किसी फ़ाइल को इकाई क्षेत्र में मैन्युअल रूप से अपलोड किया जाता है, तो आप सामग्री देख सकते हैं file:421 .../asdf.docx। हालाँकि जब मैं ऊपर दिए गए लिंक से कोड का नमूना दोहराता हूं, तो फ़ील्ड में वह फ़ाइल होती है जो चुनने और अपलोड करने के लिए उपलब्ध होती है, लेकिन फ़ील्ड मान शून्य होता है। विधि के IFile.Urlमाध्यम से सही डेटा लिखना प्रतीत होता है App.Data.Update, लेकिन व्यवस्थापक पैनल में कोई आईडी प्रदर्शित नहीं की जाती है।
Dictionary<string, object> fileDict = new Dictionary<string, object>(StringComparer.OrdinalIgnoreCase) {
{ "File", file.Url }
}; // file is ToSic.Sxc.Adam.IFile, returned by SaveInAdam
App.Data.Update(entityObj.EntityId, fileDict); // entityObj is ToSic.Eav.Data.IEntity, returned by App.Data.Create
मुझे आश्चर्य है कि अगर इसमें कुछ बुरी सहमति हो सकती है अगर इसमें मैनुअल अपलोड जैसा कोई बंधन नहीं है और इसे सही तरीके से कैसे किया जाए?
जवाब
फ़ाइलों को जोड़ने के लिए, आप वास्तव में उन्हें एक फ़ील्ड में जोड़ते हैं (ताकि यूआई फिर उन्हें पेश कर सके जैसे कि वे एक सामान्य उपयोगकर्ता द्वारा जोड़े गए थे)। चेक आउटhttps://docs.2sxc.org/api/dot-net/ToSic.Sxc.Dnn.Web.IDynamicWebApi.html#ToSic_Sxc_Dnn_Web_IDynamicWebApi_SaveInAdam_System_String_System_IO_Stream_System_String_System_String_System_Nullable_System_Guid__System_String_System_String_
BTW: यह कैसे किया जाता है यह देखने के लिए MobiusForms को देखें।
और मैं उल्लेख करना भूल गया: यहाँ डॉक्स https://docs.2sxc.org/web-api/custom-web-api-dotnet-saveinadam.html
आगे समझाने के लिए:
- SaveInAdam फ़ाइल को आइटम के ADAM फ़ोल्डर में रखेगा। चूंकि यह हो सकता है कि कई फाइलें जोड़ी जाती हैं, इसलिए यह मान लिया जाता है कि यह क्षेत्र लाइब्रेरी प्रकार होगा - जो इकाई में कुछ भी संग्रहीत नहीं करता है, यह बस उस फ़ोल्डर को स्वचालित रूप से ढूंढता है जो क्षेत्र से संबंधित है।
- यदि आप लाइब्रेरी फ़ीचर का उपयोग नहीं करना चाहते हैं, लेकिन वास्तव में लिंक के साथ केवल एकल-फ़ील्ड है, तो आपको "फ़ाइल: 74" जैसे शब्द को फ़ील्ड के मान में सहेजना होगा।