تکمیلی: 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:
عمومی نادیده گرفتن از درجه اعتبار ساقط ItemAdded(SPItemEventProperties خواص) { 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.
این یک نسخه مفید تر است که می کند همان چیزی است, but assigns the name of the file to "Title":
عمومی نادیده گرفتن از درجه اعتبار ساقط ItemAdded(SPItemEventProperties خواص) { DisableEventFiring(); // اختصاص عنوان این آیتم به نام خود فایل. // توجه: این وظیفه باید قبل از فایل خود را تغییر. // تلفن به روز رسانی() در SPFile به نظر می رسد به ابطال خواص در // از بعضی جهات. Updates to "Title" تا که تغییر شکست خورده (و به روز رسانی() صدا) // در مقابل تغییر را به نام فایل منتقل شدند. properties.ListItem["Title"] = properties.ListItem.File.Name،; properties.ListItem.Update(); SPFile F = properties.ListItem.File; // دریافت پسوند فایل. ما نیاز داریم که بعد از. رشته spfileExt = جدید FileInfo(f.Name).گسترش; // تغییر نام فایل به ID قلم دوم از اقلام لیست و استفاده از پسوند فایل را به نگه داشتن // که بخشی از آن دست نخورده. f.MoveTo(properties.ListItem.ParentList.RootFolder.Url + "/" + properties.ListItem["ID"] + spfileExt); // مرتکب حرکت. f.Update(); EnableEventFiring(); } |