Hızlı & Kolay: Bir olay alıcı yolu ile SharePoint nesne modelini kullanarak yüklenen dosya yeniden adlandırma

GÜNCELLEŞTİRME: Bu eser ama yorum olarak açıklanan önemli sınırlamalar vardır. Bu hala bazı cirumstances yararlı olabilir.

GÜNCELLEŞTİRME 2: Benim geçerli projede, Kullanıcılar her zaman belgeyi karşıya yükle. Sonuç olarak, Nerede MS Word çalıştıran ve dosya üzerinde adlandırıldı düşünüyor bir sorun haline çalıştırın yok. Bir sorun haline koştun, "dosya başka biri tarafından değiştirilmiş" ve bu bir basit semafor tür bayrak ile çözüldü. Meta veri alanı varsayılan değeri başka bir şey değiştirmek kullanıcı lüzum. İtemupdated() Aslında yeniden adlandırma işlemini gerçekleştirmeden önce ve o zamandan beri orada için geçerli bir değer alıcı görünüyor, Ben herhangi bir sorun olmadı. Sizin kilometre değişebilir.

Belirli bir adlandırma kuralı ile uymak için belirli belge kitaplığına yüklenen dosyaların adını değiştirmek için istemci şartı var. API does değil sağlamak bir "yeniden adlandırma()" yöntemi. Bunun yerine, Biz kullanın "MoveTo(…)". İşte bunun için kod en az bir bit:

 Genel geçersiz kılma geçersiz ItemAdded(SPItemEventProperties Özellikler)
        {
            SPFile f = özellikleri.ListItem.File;

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

        }

Sadece hileli parça olduğunu "özellikleri. ListItem.ParentList.RootFolder.Url". MoveTo() yöntem bir URL gerektirir. Bu dize Puan bana benim geçerli belge kitaplığı kök klasöre püresi. Bu benim olay alıcı herhangi bir sabit kodlama önlemek sağlar.

Bu yaptığını bir daha yararlı bir sürümüdür, Ama dosya adı "Title" atar:

 Genel geçersiz kılma geçersiz ItemAdded(SPItemEventProperties Özellikler)
        {
            DisableEventFiring();

            // Bu madde başlığı dosyanın kendi adını atayın.
 // NOT: Bu atama dosyasının kendisini değiştirmeden önce yer almalıdır.
 // Güncelleme calling() SPFile özelliklerinde geçersiz görünüyor
 // Biraz mantıklı.  "Başlığı ile ilgili güncellemeleri" Bunu değiştirene kadar başarısız oldu (ve güncelleştirme() çağrı)
 // dosya adını değiştir taşındı.
            özellikleri.ListItem["Başlığı"] = özellikleri.ListItem.File.Name;

            özellikleri.ListItem.Update();

            SPFile f = özellikleri.ListItem.File;

            // Dosya uzantısı olsun.  Daha sonra ihtiyacımız.
 dize spfileExt = Yeni FileInfo(f.Name).Uzantısı;

            // Liste öğesinin kimliği için dosyayı yeniden adlandırın ve dosya uzantısı tutmak için kullanabilirsiniz.
 // Bunun bir parçası olduğu gibi.
            f.MoveTo(özellikleri.ListItem.ParentList.RootFolder.Url +
                "/" + özellikleri.ListItem["KİMLİĞİ"] + spfileExt);

            // Hareket tamamlama.
            f.Update();

            EnableEventFiring();
        }

4 “Üzerine düşüncelerHızlı & Kolay: Bir olay alıcı yolu ile SharePoint nesne modelini kullanarak yüklenen dosya yeniden adlandırma

  1. Adı yok
    Ayrıca, Eğer bu sözcük içinde, Bu bir hata döndürür ve dosya var demek. Yeni URL hakkında söylemedim. Henüz bu bir yol bulamadı.
    Yanıtla
  2. Paul Galvin
    Bu işaret için teşekkür ederiz. Ben de bu sorunun cevabını bilmiyorum … Onu nasıl görmek ilginç olacak.
    RE: zaman uyumsuz & yeniden yönlendirme
    Bir ItemAdding için hareket o-ecek çözmek Eğer merak ediyorum. Büyük bir delik.
    Teşekkürler!
    –Paul
    Yanıtla
  3. Nadeem Mitha
    Dosya taşındı zaman uyumsuz olarak çünkü, önce hareket kararlıdır EditForm.aspx için yönlendirilmesini bir imkanı vardır (ve bu kötü). Önce MoveTo satır uyku kod yaparsanız bu olduğunu göreceksiniz. Ne bir özelleştirilmiş düzenleme formu kullanarak bir yana bu sorun hakkında yapılabilir hala çözemedim.
    Yanıtla

Cevap bırak

E-posta hesabınız yayımlanmayacak. Gerekli alanlar işaretlendi *