Greitai & Lengvai: Pervardyti įkelti failą naudodami SharePoint objekto modelio per įvykio imtuvas

NAUJINIMAS: Tai veikia bet yra didelių trūkumų, kurios yra apibūdintos komentarus. Tai vis dar gali būti naudinga, kai kurių aplinkybių.

NAUJINIMAS 2: Į mano dabartinis projektas, vartotojai visada nusiųsti dokumentų. Todėl, Aš ne paleisti į problemų kur MS Word veikia ir mano, kad failas buvo pervardytas į jį. Aš paleisti į problemų, "failas buvo pakeistas kažkas" ir išspręsti tai per paprastas semaforo tipo vėliava. Vartotojams reikia pakeisti meta duomenų lauką numatytąją reikšmę į ką nors kita. Į itemupdated() imtuvas ieško galioja vertės, prieš atlikdami, pervardyti ir nuo tada, Aš neturėjo jokių problemų. Jūsų rida gali skirtis.

Turiu klientas reikalavimas pakeisti failus įkelti į konkrečią dokumentų biblioteką įtaisai atitinka ypač įvardijimo. API nepateikia "pervardyti()" metodas. Vietoj, Mes naudojame "MoveTo(…)". Čia yra šiek tiek minimalus kodas tai pasiekti:

 visuomenės Nepaisyti negalioja ItemAdded(SPItemEventProperties ypatybės)
        {
            SPFile f = ypatybės.ListItem.File;

            f.MoveTo(ypatybės.ListItem.ParentList.RootFolder.Url + "/xyzzy.doc");
            f.Update();

        }

Tik sudėtinga bitas yra "savybes. ListItem.ParentList.RootFolder.Url". Į MoveTo() metodui reikia URL. Kad koše iki eilutės taškų mane į šakninį aplanką mano dabartinis dokumentų bibliotekos. Tai leidžia man išvengti bet sunku kodavimo mano atveju imtuvas.

Tai yra daugiau naudinga versija, kad daro tą patį, Tačiau priskiria failo pavadinimą "Title":

 visuomenės Nepaisyti negalioja ItemAdded(SPItemEventProperties ypatybės)
        {
            DisableEventFiring();

            // Šio elemento pavadinimas priskirti pačios rinkmenos pavadinimas.
 // PASTABA: Šiame pavedime turi vykti, prieš mes pakeisti pačiame faile.
 // Raginama atnaujinti() dėl to SPFile atrodo, kad pripažinti negaliojančiais ypatybės
 // tam tikra prasme.  Atnaujinimus į "pavadinimas" nepavyko tol, kol kad pakeisti (ir atnaujinti() skambinti)
 // buvo perkelta prieš pakeisti į failo vardas.
            ypatybės.ListItem["Pavadinimas"] = ypatybės.ListItem.File.Name;

            ypatybės.ListItem.Update();

            SPFile f = ypatybės.ListItem.File;

            // Gauti failo plėtinys.  Mums reikia, kad vėliau.
 eilutė spfileExt = naujas FileInfo(f.name).Pratęsimas;

            // Pervardykite failą į sąrašo elemento ID ir tvarkyti naudoja failo plėtinį
 // kad jo neapgadinto laivo dalis.
            f.MoveTo(ypatybės.ListItem.ParentList.RootFolder.Url +
                "/" + ypatybės.ListItem["ID"] + spfileExt);

            // Įsipareigoti perkelti.
            f.Update();

            EnableEventFiring();
        }

4 mintys apie "Greitai & Lengvai: Pervardyti įkelti failą naudodami SharePoint objekto modelio per įvykio imtuvas

  1. Nr pavadinimas
    Taip pat, Jei galite tai padaryti iš programoje Word, ji grąžina klaidos ir pasakyti, kad failo nėra. Jis nebuvo pasakyta apie naują URL. Aš ne dar rado būdas išspręsti šią.
    Atsakyti
  2. Paul Galvin
    Ačiū už pažymėdamas, kad iš. Aš nežinau, atsakymas į tą vieną arba … bus įdomu pamatyti, kaip juos valdyti.
    RE: vykdomas Async & peradresavimas
    Man įdomu, jei vykstantiems į ItemAdding padės išspręsti jį. Tai yra didele anga.
    ačiū!
    –Paul
    Atsakyti
  3. Nadeem Mitha
    Nes failas bus perkeltas asinchroniškai, yra galimybė nukreipti į EditForm.aspx prieš pereiti yra įsipareigojusi (ir tai yra blogai). Jūs pamatysite, kad tai atsitiks, jei jūs padaryti miegoti prieš MoveTo eilutę kodas. Aš dar ne simbolinė, ką galima padaryti, apie šią problemą be individualų redaguoti formoje.
    Atsakyti

Palik atsakymą į Nadeem Mitha Atšaukti atsakymą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *