2012年4月16日 星期一

Custom Upload File To Document in SharePoint 2010 (客製化上傳文件至文件庫的自訂程式)

在sharepoint中上傳文件是一個必備的功能,預設的流程是:選擇檔案,確認上傳,編輯其他欄位資訊,若是取消則sharepoint放棄這項目,並將檔案刪除。

不過我發現台灣客戶一個很有趣的現象,因為上傳文件時有很多條件需要額外做判斷或是事先判斷,然後再決定是否上傳,所以幾乎都需要客製化上傳文件的那一個頁面。當然這樣的情況有好幾種解決方式,有客製化webpart、使用EventReceiver、甚至客製化編輯預設的上傳Form或是編輯Form……等等。

我想客製化webpart應該是最常見,或者是最簡單的方式吧!! (隨便問一下Google大神,一堆範例CODE阿)
以下亞當斯幫客戶寫一個簡單的範例程式,順便在這邊備存一下:

1. 建立一個WebPart專案,使用Visual WebPart,畫面如下:

image

2.假設想要上傳的目標文件庫名稱為:MyDocs,並且想要把TreeView中有選取的資料,記錄到MyDocs中一個Comments欄位中,則按鈕Click事件程序程式碼如下:

image

3.部署到指定的sharepoint網站中,在網頁中加入WebPart

image

4.設訂定勾選相關資料後,執行測試!!

image

1 則留言:

釣魚哥 提到...

Hi Adams 您好,
感謝您提供fileupload 範例..
根據範例,我已經成功做好如範例 Webpart.
但是發現如果上傳目標改成 List(清單)中附件,會有一個現象.

sharepoint 中List 附件是被放置在 /sites/Lists/"your List"/Attachmems/
如果List item 透過sharepoint 內建項目 上傳附件,它會自動產生ID目錄然後再將該文件
目錄結構 /sites/Lists/"your List"/Attachmems/10/my.pdf (10為該項在清單中識別碼)
然後再透過 此範例
SPFile file = list.RootFolder.Files.Add(list.RootFolder.Url + "/Attachments/" + attachid + "/" + this.FileUpload1.FileName, this.FileUpload1.PostedFile.InputStream, true);
就可以將另一附件加入.

但是如果 該清單中item 沒有附件, 上述 範例就會報錯,報錯主要原因是,無法透過programly 方式將物件識別碼目錄加在

/sites/Lists/"your List"/Attachmems/ 之下..
之前有嘗試過用SPFolder 方式加入,但是也一樣會報相同錯.

不知您是否有其他放是可以解決? 懇請指點一下.. 因為 List Item 程式加入附件是目前我需要功能.
感謝指點..