דערהייַנטיקן: This works but there are significant limitations which are described in the comments. This may still be useful in some cirumstances.
דערהייַנטיקן 2: אין מיין קראַנט פּרויעקט, users always upload documents. ווי אַ רעזולטאַט, I don’t run into a problem where MS Word is running and thinks that the file was renamed on it. I did run into a problem, "the file was modified by someone else" and solved this via a simple semaphore type flag. Users need to change a meta data field from its default value to something else. The itemupdated() ופנעמער קוקט פֿאַר אַ גילטיק ווערט עס איידער פאקטיש פּערפאָרמינג די רענאַמע און זינט דעמאָלט, I have not had any problems. Your mileage may vary.
I have a client requirement to change the name of files uploaded to a specific document library to conform with a particular naming convention. The API does not provide a "rename()" מעטאָד. אַנשטאָט, מיר נוצן "MoveTo(…)". Here is a minimal bit of code to accomplish this:
עפנטלעך אָווועררייד פּאָסל יטעמאַדדעד(ספּיטעמעווענטפּראָפּערטיעס פּראָפּערטיעס) { ספּפילע F = פּראָפּערטיעס.ליסטיטעמ.פילע; פ.מאָוועטאָ(פּראָפּערטיעס.ליסטיטעמ.פּאַרענטליסט.ראָאָטפאָלדער.ורל + "/xyzzy.doc"); פ.ופּדאַטע(); } |
The only tricky bit is the "properties.ListItem.ParentList.RootFolder.Url". The MoveTo() method requires a URL. That mashed up string points me to the root folder of my current document library. This allows me to avoid any hard coding in my event receiver.
דאס איז אַ מער נוצלעך ווערסיע וואָס טוט די זעלבע זאַך, but assigns the name of the file to "Title":
עפנטלעך אָווועררייד פּאָסל יטעמאַדדעד(ספּיטעמעווענטפּראָפּערטיעס פּראָפּערטיעס) { דיסאַבלעעווענטפירינג(); // באַשטימען די טיטל פון דעם נומער צו דעם נאָמען פון טעקע זיך. // נאָטיץ: דאס אַסיינמאַנט מוזן נעמען אָרט איידער מיר מאָדיפיצירן דער טעקע זיך. // פאַך דערהייַנטיקן() אויף די ספּפילע מיינט צו ינוואַלידייט די פּראָפּערטיעס אין // עטלעכע זינען. Updates to "Title" ניט אַנדערש ביז אַז ענדערונג (און דערהייַנטיקן() רופן) // זענען אריבערגעפארן אין פראָנט פון די טוישן צו דער טעקע נאָמען. פּראָפּערטיעס.ליסטיטעם["Title"] = Properties.ListItem.File.Name; פּראָפּערטיעס.ליסטיטעמ.ופּדאַטע(); ספּפילע F = פּראָפּערטיעס.ליסטיטעמ.פילע; // באַקומען די פאַרלענגערונג פון דער טעקע. מיר דאַרפֿן אַז שפּעטער. שטריקל ספּפילעעקסט = נייַ טעקע אינפֿאָרמאַציע(f.Name).געשפּרייט; // רענאַמע דער טעקע צו די רשימה נומער ס שייַן און נוצן די טעקע געשפּרייט צו האַלטן // אַז טייל פון עס בעשאָלעם. פ.מאָוועטאָ(פּראָפּערטיעס.ליסטיטעמ.פּאַרענטליסט.ראָאָטפאָלדער.ורל + "/" + פּראָפּערטיעס.ליסטיטעם["ID"] + ספּפילעעקסט); // טוען די רירן. פ.ופּדאַטע(); ענאַבלעעווענטפירינג(); } |