מהירה & קל: שינוי שם הקובץ שנטען באמצעות מודל האובייקטים של SharePoint באמצעות מקלט אירוע

עדכון: זה עובד אבל יש מגבלות משמעותיות שיפורטו על דבריו. זה עדיין יכול להיות שימושי ב כמה כפויה.

עדכון 2: בפרוייקט הנוכחי שלי, משתמשים תמיד להעלות מסמכים. כתוצאה מכך, אני לא רץ לתוך בעיה בו MS-Word פועל וחושב כי הקובץ שונה שם על זה. נתקלתי בעיה, "הקובץ השתנה על-ידי מישהו אחר" פתרת את זה באמצעות דגל סוג פשוט סמפור. משתמשים צריכים לשנות שדה נתונים meta מערך ברירת המחדל שלה למשהו אחר. Itemupdated() מקלט נראה עבור ערך חוקי לפני למעשה ביצוע שינוי מאז, לא הייתה לי שום בעיות. המילים שלך עשוי להשתנות.

יש לי דרישה של הלקוח כדי לשנות את השם של הקבצים המועלים לספריית מסמכים ספציפיים כדי להתאים עם מוסכמה מסוימת. ה-API אינו מספק שינוי שם"()" שיטה. במקום זאת, אנו משתמשים "'Moveto '(…)". . הנה קצת מינימלי של קוד כדי להשיג את זה:

 הציבור עקיפה void ItemAdded(SPItemEventProperties מאפיינים)
        {
            SPFile f = נכסים.ListItem.File;

            f.MoveTo(מאפיינים.ListItem.ParentList.RootFolder.Url + "/xyzzy.doc");
            f.Update();

        }

והחוצה היא "המאפיינים. ListItem.ParentList.RootFolder.Url". ' Moveto '() השיטה דורשת כתובת URL. זה פירה מחרוזת נקודות אותי אל תיקיית הבסיס של ספריית המסמך הנוכחי שלי. זה מאפשר לי להימנע כל קידוד קשיח בתוך השפופרת האירוע שלי.

זוהי גרסה יותר שימושי זה עושה את אותו הדבר, אבל מקצה את השם של הקובץ "Title":

 הציבור עקיפה void ItemAdded(SPItemEventProperties מאפיינים)
        {
            DisableEventFiring();

            // להקצות את הכותרת של פריט זה השם של הקובץ עצמו.
 // הערה: הקצאה זו חייב להתבצע לפני לנו לשנות את הקובץ עצמו.
 // מתקשר עדכון() על SPFile נראה לפסול את המאפיינים
 // קצת הגיון.  עדכונים "כותרת" נכשל עד זה ישתנה (עדכון() שיחה)
 // לפני השינוי הועברו על שם הקובץ.
            מאפיינים.פריט הרשימה["כותרת"] = נכסים.ListItem.File.Name;

            מאפיינים.ListItem.Update();

            SPFile f = נכסים.ListItem.File;

            // מקבל את הסיומת של הקובץ.  אנחנו צריכים את זה מאוחר יותר.
 מחרוזת spfileExt = חדש FileInfo(f.Name).סיומת;

            // שנה את שם הקובץ של פריט הרשימה מזהה ולהשתמש בסיומת הקובץ לשמור
 // את החלק הזה ללא פגע.
            f.MoveTo(מאפיינים.ListItem.ParentList.RootFolder.Url +
                "/" + מאפיינים.פריט הרשימה["מזהה"] + spfileExt);

            // לבצע את המהלך.
            f.Update();

            EnableEventFiring();
        }

4 מחשבות על "מהירה & קל: שינוי שם הקובץ שנטען באמצעות מודל האובייקטים של SharePoint באמצעות מקלט אירוע

  1. ללא שם
    גם, אם תעשה זאת מן בתוך Word, היא מחזירה שגיאה, אומר שהקובץ לא קיים. זה לא נאמר על כתובת ה-URL החדשה. עדיין לא מצאתי דרך לעקוף את זה.
  2. פול Galvin
    . תודה שציינת את זה. אני גם לא יודע את התשובה לשאלה הזאת … יהיה מעניין לראות איך לשלוט בזה.
    רי: async & ניתוב מחדש של תיקיות
    אני תוהה אם להעבירו ItemAdding תפתור אותה. . זה חור גדול.
    תודה!
    –פול
  3. Mitha נדים
    מכיוון שהקובץ עבר באופן אסינכרוני, קיימת אפשרות של להיות מנותב אל editform. Aspx לפני המעבר מחויבת (זה רע). תוכל לראות כי זה יקרה אם הקוד לישון לפני השורה ' moveto '. עדיין לא הבנת מה ניתן לעשות בקשר לבעיה מלבד השימוש בטופס מותאם אישית עריכה.

השאירו תגובה כדי Mitha נדים בטל תגובה

כתובת האימייל שלך לא תפורסם. שדות חובה מסומנים *