Ātrās & Viegli: Pārdēvēt augšupielādēto failu, izmantojot SharePoint objekta modeli, izmantojot notikumu uztvērēju

ATJAUNINĀJUMS: Tas darbojas, bet ir būtiski ierobežojumi, kas aprakstīta komentāri. Tas vēl joprojām var būt noderīgi, daži apstākļi.

ATJAUNINĀJUMS 2: Ar manu pašreizējo projektu, lietotāji vienmēr augšupielādēt dokumentus. Kā rezultātā, Es nedomāju saskaraties ar problēmu, kur MS Word ir palaista un domā, ka fails tika pārdēvēts par to. Man bija uzskriet problēmu, "fails tika modificēts kāds cits" un atrisināt šo, izmantojot vienkāršu semafora tipa karogu. Lietotājiem ir jāmaina meta datu lauks no tās noklusējuma vērtību uz kaut ko citu. Itemupdated() uztvērējs meklē tur derīgu vērtību pirms īstās pārdēvēt un pēc tam, Man nebija nekādas problēmas. Jūsu nobraukums var atšķirties.

Man ir klientu vajadzību mainīt nosaukumu uz konkrētu dokumentu bibliotēku, lai atbilstu konkrētā nosaukumdošanas augšupielādēto failu. API nenodrošina "pārdēvēšana()" metode. Tā vietā, mēs izmantojam "MoveTo(…)". Šeit ir mazliet minimālu kodu, lai to paveiktu:

 valsts ignorēt anulēts ItemAdded(SPItemEventProperties rekvizīti)
        {
            SPFile f = īpašības.ListItem.File;

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

        }

Tikai grūts bit ir "rekvizītiem. ListItem.ParentList.RootFolder.Url". MoveTo() metode prasa URL. Ka biezeni virknē punkti mani saknes mape Mana pašreizējā dokumentu bibliotēkā. Tas ļauj man, lai izvairītos no jebkāda grūti kodēšanas manu notikumu uztvērēju.

Tas ir vairāk noderīgs versija, kas nav tas pats, bet piešķir faila nosaukumu "Title":

 valsts ignorēt anulēts ItemAdded(SPItemEventProperties rekvizīti)
        {
            DisableEventFiring();

            // Piešķirt šī vienuma nosaukums pats faila nosaukums.
 // PIEZĪME: Šis uzdevums ir jānotiek pirms mēs modificēsim pašā failā.
 // Aicinot atjaunināt() par SPFile, šķiet, atzīst par nederīgu rekvizīti
 // zināmā mērā.  Atjauninājumus programmai "Title" līdz ko mainīt neizdevās (un atjaunināt() zvanu)
 // tika pārvietoti priekšā izmaiņas ar faila nosaukumu.
            rekvizītus.ListItem["Title"] = īpašības.ListItem.File.Name;

            rekvizītus.ListItem.Update();

            SPFile f = īpašības.ListItem.File;

            // Iegūt faila paplašinājumu.  Mums ir nepieciešams, kas vēlāk.
 virkne spfileExt = jaunā FileInfo(f.Name).Paplašinājums;

            // Pārdēvējiet failu saraksta vienuma ID un izmanto faila paplašinājumu, lai saglabātu
 // daļa, tas neskartu.
            f.MoveTo(rekvizītus.ListItem.ParentList.RootFolder.Url +
                "/" + rekvizītus.ListItem["ID"] + spfileExt);

            // Izdarīt gājienu.
            f.Update();

            EnableEventFiring();
        }

4 domas par "Ātrās & Viegli: Pārdēvēt augšupielādēto failu, izmantojot SharePoint objekta modeli, izmantojot notikumu uztvērēju

  1. Bez nosaukuma
    Arī, Ja jūs to izdarītu no programmas Word, tas atgriezīsies kļūdu un teikt, ka fails nepastāv. Tā nav teicis par jaunu URL. Es vēl neesmu atradis šo problēmu var atrisināt.
    Atbilde
  2. Paul Galvin
    Paldies par norādot, ka. Nu es nezinu atbildi uz šo vienu … būs interesanti redzēt, kā vadīt to.
    NOGULUMU: async & novirzīšanas
    Brīnums, ja pārvietojot to uz ItemAdding atrisinās to. Tas ir liels caurums.
    paldies!
    –Paul
    Atbilde
  3. Nadeem Mitha
    Jo fails tiek pārvietots asinhroni, pastāv iespēja tiek novirzīts uz EditForm.aspx pirms pārvietoties ir apņēmusies (un tas ir slikti). Jūs redzēsiet, ka tas notiek, ja jūs veicat gulēt pirms MoveTo rindas kods. Es joprojām nav rakstainas to, ko var izdarīt par šo problēmu malā izmantot pielāgoto Rediģēt veidlapu.
    Atbilde

Atstāt atbilde Nadeem Mitha Atcelt atbildi

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti *