Rapid & Uşor: Redenumiţi fişierul încărcat utilizând modelul de obiect SharePoint Via un receptor de eveniment

ACTUALIZARE: Acest lucru funcţionează, dar există limitări semnificative care sunt descrise în Comentarii. Acest lucru poate fi încă utilă în unele circumstanțele.

ACTUALIZARE 2: În proiectul meu curent, utilizatorii întotdeauna Încărcați documente. Ca rezultat al, Eu nu a alerga într-o problemă în cazul în care MS Word se execută şi crede că fişierul a fost redenumit pe ea. I a alerga într-o problemă, "fişierul a fost modificat de altcineva" şi acest lucru rezolvat prin intermediul unui pavilion de tip semafor simplu. Utilizatorii au nevoie pentru a schimba un câmp de date meta la valoarea sa implicită la altceva. Itemupdated() receptor caută o valoare validă de acolo înainte de a efectua de fapt Redenumire şi de atunci, Nu am avut probleme. Poate varia de kilometraj dumneavoastră.

Eu am o cerinţă de client de a schimba numele de fişiere încărcat la o bibliotecă de documente specifice pentru a se conforma cu o convenţie de denumire special. API nu furnizează o Redenumire"()" metoda. În schimb, vom folosi "MoveTo(…)". Aici este un pic minimă de cod pentru a realiza acest lucru:

 publice suprascrie nule ItemAdded(SPItemEventProperties proprietăţi)
        {
            SPFile f = proprietăţi.ListItem.File;

            f.MoveTo(proprietăţi.ListItem.ParentList.RootFolder.Url + "/xyzzy.doc");
            f.Update();

        }

Bit înşelător numai este "proprietăţile. ListItem.ParentList.RootFolder.Url". MoveTo() metoda necesită un URL. Care piure şir de puncte de mine la folderul rădăcină al meu curent bibliotecă de documente. Acest lucru permite-mi pentru a evita orice greu de codificare în receptor mea de eveniment.

Aceasta este o versiune mult mai util, care face acelaşi lucru, dar atribuie numele de fişier "Titlul":

 publice suprascrie nule ItemAdded(SPItemEventProperties proprietăţi)
        {
            DisableEventFiring();

            // Atribui titlul de acest element pentru numele fişierului în sine.
 // NOTĂ: Această misiune trebuie să aibă loc înainte de a ne modifica fişierul în sine.
 // Actualizare de asteptare() pe SPFile pare să invalideze proprietăţi în
 // unele sens.  Actualizărilor titlu"" nu a reuşit până la această schimbare (şi actualizare() apel)
 // au fost mutate în faţa schimbarea numele de fişier.
            proprietăţi.ListItem["Titlul"] = proprietăţi.ListItem.File.Name;

            proprietăţi.ListItem.Update();

            SPFile f = proprietăţi.ListItem.File;

            // Obţine extensia fişierului.  Am nevoie de asta mai târziu.
 şir spfileExt = noi AuthConfig(f.Name).Prelungire;

            // Redenumiţi fişierul ID element de listă şi de a folosi extensia de fişier pentru a menţine
 // că o parte din acesta intacte.
            f.MoveTo(proprietăţi.ListItem.ParentList.RootFolder.Url +
                "/" + proprietăţi.ListItem["ID"] + spfileExt);

            // Se muta.
            f.Update();

            EnableEventFiring();
        }

4 gânduri pe "Rapid & Uşor: Redenumiţi fişierul încărcat utilizând modelul de obiect SharePoint Via un receptor de eveniment

  1. Nici un nume
    De asemenea, Dacă veţi face acest lucru de la Word, va returna o eroare şi spun că fişierul nu există. Nu se spune despre noul URL. Nu am găsit încă o modalitate în jurul acestei.
    Răspuns
  2. Paul Galvin
    Multumesc pentru ce indică faptul că. Nu ştiu răspunsul la faptul că unul fie … va fi interesant pentru a vedea cum să gestioneze.
    RE: asincron & Redirecţionare
    Mă întreb dacă acesta se deplasează de la o ItemAdding va rezolva. Asta e o gaură mare.
    mulţumesc!
    –Paul
    Răspuns
  3. Nedelcu zamfir
    Deoarece fişierul este mutat asincron, Există o posibilitate de a fi redirected la EditForm.aspx înainte de a muta este angajat (şi că este rău). Veţi vedea că acest lucru se întâmplă dacă tu a face codul de somn înainte de linia de MoveTo. Eu încă nu s-au dat seama ce se poate face despre această problemă în afară de utilizarea unui format particularizat editare.
    Răspuns

Lasă un răspuns la Director site-ul Anuleaza raspunsul

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate *