Cyflym & Hawdd: Ail-enwi Ffeil Llwythwyd i fyny Gan ddefnyddio Model Gwrthrych SharePoint Drwy Derbynnydd Digwyddiad

Y NEWYDDION DIWEDDARAF: Mae hyn yn gweithio ond mae cyfyngiadau sylweddol a ddisgrifir yn y sylwadau. Gall hyn dal i fod yn ddefnyddiol mewn rhai cirumstances.

Y NEWYDDION DIWEDDARAF 2: Yn fy prosiect presennol, Mae defnyddwyr bob amser yn lanlwytho dogfennau. O ganlyniad,, Peidiwch â laddaf i broblem lle mae MS Word yn rhedeg ac yn credu bod ailenwyd y ffeil ar ei. Doedd wedi rhedeg i broblem, "Roedd y ffeil haddasu gan rywun arall" a datrys hyn drwy baner math cyfeiriad semaffor syml. Mae angen i ddefnyddwyr newid cae meta data o ei gwerth diofyn i rywbeth arall. Y itemupdated() derbynnydd yn edrych am werth dilys yno cyn mewn gwirionedd yn perfformio ail-enwi ac ers hynny, Nid wyf wedi cael unrhyw broblemau. Gall eich milltiroedd yn amrywio.

Mae gennyf gofyniad cleient i newid enw'r ffeil llwytho i fyny i Llyfrgell o ddogfennau penodol i gydymffurfio â Confensiwn Enwi penodol. Nid yw y API yn darparu "ailenwi()" dull. Yn lle hynny, rydym yn defnyddio "MoveTo(…)". Dyma ychydig bach iawn o Cod i gyflawni hyn:

 cyhoeddus gor-redeg gwag ItemAdded(SPItemEventProperties eiddo)
        {
            SPFile f = properties.ListItem.File;

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

        }

Y rhan anodd yn unig yw 'properties. ListItem.ParentList.RootFolder.Url". Y MoveTo() Mae'r dull yn gofyn URL. Roedd hynny wedi'i stwnsio pwyntiau llinyn mi i ffolder wraidd fy llyfrgell ddogfen bresennol. Mae hyn yn fy ngalluogi i osgoi unrhyw codau caled yn fy derbynnydd digwyddiad.

Mae hwn yn fersiwn mwy defnyddiol sy'n gwneud yr un peth, ond neilltuo enw'r ffeil "Teitl":

 cyhoeddus gor-redeg gwag ItemAdded(SPItemEventProperties eiddo)
        {
            DisableEventFiring();

            // Neilltuo teitl yr eitem hon i enw ffeil ei hun.
 // NODYN: Rhaid i'r aseiniad yn cael ei gynnal cyn i ni addasu'r ffeil ei hun.
 // Galw diweddariad() ar y SPFile ymddangos i annilysu eiddo yn
 // ychydig o synnwyr.  "Teitl y wybodaeth ddiweddaraf am" wedi methu hyd nes bod y newid (a diweddaru() ffoniwch)
 // eu symud o flaen y newid i'r enw ffeil.
            properties.ListItem["Teitl"] = Properties.ListItem.File.Name;

            properties.ListItem.Update();

            SPFile f = properties.ListItem.File;

            // Cael estyniad y ffeil.  Mae angen bod yn nes ymlaen.
 llinyn spfileExt = newydd Gwybodaeth Ffeil(f.Name).Estyniad;

            // Ail-enwi'r ffeil i adnabod yr eitem rhestr a defnyddio'r estyniad ffeil i gadw
 // y rhan honno ohono yn gyfan.
            f.MoveTo(properties.ListItem.ParentList.RootFolder.Url +
                "/" + properties.ListItem["ID"] + spfileExt);

            // Ymrwymo symud.
            f.Update();

            EnableEventFiring();
        }

4 meddyliau ar "Cyflym & Hawdd: Ail-enwi Ffeil Llwythwyd i fyny Gan ddefnyddio Model Gwrthrych SharePoint Drwy Derbynnydd Digwyddiad

  1. Dim enw
    Hefyd, Os byddwch yn gwneud hyn o fewn Word, bydd yn dychwelyd gwall a dweud nad yw'r ffeil yn bodoli. Nid yw'n cael gwybod am y URL newydd. Nid wyf wedi dod o hyd eto yn ffordd o gwmpas hyn.
    Ateb
  2. Paul Galvin
    Diolch am nodi hynny. Ddim yn gwybod fod un ateb naill ai … Bydd yn ddiddorol gweld sut i'w reoli.
    Addysg Grefyddol: async & ailgyfeirio
    Tybed os bydd symud i'r ItemAdding yn datrys ei. Mae twll mawr.
    Diolch!
    –Paul
    Ateb
  3. Nadeem Mitha
    Oherwydd bod y ffeil yn cael ei symud asynchronously, mae posibilrwydd o gael ei ailgyfeirio i EditForm.aspx cyn y symud yn ymrwymedig (ac mae hynny'n ddrwg). Byddwch yn gweld bod hyn yn digwydd os byddwch yn gwneud y Cod gysgu cyn y llinell MoveTo. Hyd nad wyf penderfynu beth y gellir ei wneud am y broblem honno ar wahân gan ddefnyddio ffurflen golygu personol.
    Ateb

Ad a Ateb i Nadeem Mitha Diddymu ateb

Ni fydd eich cyfeiriad e-bost yn cael ei gyhoeddi. Meysydd gofynnol yn cael eu marcio *