अद्यतन: यह काम करता है, लेकिन वहाँ जो टिप्पणी में वर्णित हैं महत्वपूर्ण सीमाएं हैं. यह अभी भी कुछ cirumstances में उपयोगी हो सकता है.
अद्यतन 2: मेरे वर्तमान परियोजना में, उपयोगकर्ताओं को हमेशा दस्तावेज़ अपलोड करें. एक परिणाम के रूप में, मैं कहाँ MS वर्ड चल रहा है और सोचता है कि फ़ाइल पर यह नाम दिया गया था एक समस्या में चला नहीं. मैं एक समस्या में चला था, "फ़ाइल किसी और द्वारा संशोधित किया गया" और यह एक सरल सिकंदरा प्रकार ध्वज के माध्यम से हल. एक मेटा डेटा फ़ील्ड के लिए कुछ और उसके डिफ़ॉल्ट मान से बदलने के लिए उपयोगकर्ताओं की आवश्यकता. Itemupdated() रिसीवर वास्तव में नाम बदलें प्रदर्शन कर रहा से पहले और उसके बाद से वहाँ कोई मान्य मान के लिए दिखता है, मैं किसी भी समस्याओं का नहीं था. आपका लाभ भिन्न हो सकते हैं.
मैं एक ग्राहक की आवश्यकता के अनुरूप के साथ एक विशेष सम्मेलन नामकरण किसी विशिष्ट दस्तावेज़ लायब्रेरी के लिए अपलोड की गई फ़ाइलों का नाम बदलने के लिए है. एपीआई एक "पुनर्नामित नहीं प्रदान करता है()" विधि. इसके बजाय, हम का उपयोग करें "MoveTo(…)". यहाँ इस को पूरा करने के लिए कोड की कम से कम थोड़ी है:
सार्वजनिक ओवरराइड करें शून्य ItemAdded(SPItemEventProperties गुण) { SPFile f = गुण।ListItem.File; f.MoveTo(गुण।ListItem.ParentList.RootFolder.Url + "/xyzzy.doc"); f.Update(); } |
केवल मुश्किल सा है "गुण। ListItem.ParentList.RootFolder.Url". MoveTo() विधि किसी URL की आवश्यकता है. कि स्ट्रिंग अंक ले मुझे मेरे वर्तमान दस्तावेज़ लायब्रेरी के रूट फ़ोल्डर में मसला हुआ. यह मुझे मेरी घटना रिसीवर में किसी भी हार्ड कोडिंग से बचने के लिए अनुमति देता है.
यह एक अधिक उपयोगी संस्करण है कि एक ही बात करता है, लेकिन "शीर्षक के लिए" फ़ाइल का नाम असाइन करता है:
सार्वजनिक ओवरराइड करें शून्य ItemAdded(SPItemEventProperties गुण) { DisableEventFiring(); // इस आइटम का शीर्षक स्वयं फ़ाइल के नाम को असाइन करें. // नोट: हम स्वयं फ़ाइल संशोधित करने से पहले इस असाइनमेंट जगह ले लेना चाहिए. // अद्यतन बुला() पर SPFile गुण में अमान्य करने लगता है // कुछ भाव. "शीर्षक के लिए अद्यतन" जब तक कि बदलने में विफल रहा (और अद्यतन() कॉल) // परिवर्तन के सामने फ़ाइल नाम के लिए चले गए थे. गुण।ListItem["शीर्षक"] गुण =।ListItem.File.Name; गुण।ListItem.Update(); SPFile f = गुण।ListItem.File; // फ़ाइल का एक्सटेंशन मिल. हमें जरूरत है कि बाद में. स्ट्रिंग spfileExt = नई FileInfo(f.Name).एक्सटेंशन; // सूची आइटम ID करने के लिए फ़ाइल नाम बदलें और रखने के लिए फ़ाइल एक्सटेंशन का उपयोग करें // यह अक्षुण्ण का वह हिस्सा. f.MoveTo(गुण।ListItem.ParentList.RootFolder.Url + "/" + गुण।ListItem["आईडी"] + spfileExt); // हटो संकल्प लें. f.Update(); EnableEventFiring(); } |