UPDATE: This works but there are significant limitations which are described in the comments. This may still be useful in some cirumstances.
UPDATE 2: Mənim cari layihə, users always upload documents. Nəticəsində, 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() alıcı əslində adını dəyişmək həyata əvvəl və o vaxtdan bəri orada düzgün değer axtarır, 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()" üsul. Əvəzində, Biz istifadə "MoveTo(…)". Here is a minimal bit of code to accomplish this:
ictimai alıqlamaq ləğv ItemAdded(SPItemEventProperties xassələri) { SPFile f = properties.ListItem.File; f.MoveTo(properties.ListItem.ParentList.RootFolder.Url + "/xyzzy.doc"); f.Update(); } |
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.
Bu, eyni şey ki, daha faydalı versiyası, but assigns the name of the file to "Title":
ictimai alıqlamaq ləğv ItemAdded(SPItemEventProperties xassələri) { DisableEventFiring(); // Fayl özü adı ilə bu bəndin adı Təyin. // QEYD: Biz fayl özü dəyişdirmək əvvəl təyin yer almalıdır. // Yeniləmə Calling() ki, SPFile üzrə xüsusiyyətlərini etibarsız görünür // müəyyən mənada. Updates to "Title" dəyişiklik qədər uğursuz (və yeniləmə() çağırmaq) // fayl adı dəyişikliyin qarşısında köçürülüb. properties.ListItem["Title"] = Properties.ListItem.File.Name; properties.ListItem.Update(); SPFile f = properties.ListItem.File; // Fayl uzadılması alın. Biz sonra ehtiyac. sim spfileExt = yeni Fayl haqqında məlumat(f.Name).Artırma; // Siyahısı maddənin ID fayl adını dəyişmək və saxlamaq üçün fayl uzantısı istifadə // vuruşa onun bir hissəsi. f.MoveTo(properties.ListItem.ParentList.RootFolder.Url + "/" + properties.ListItem["ID"] + spfileExt); // Hərəkət törətmək. f.Update(); EnableEventFiring(); } |