2012-04-07 112 views
0

誰能幫我,我想自定義,我想驗證上傳的圖片類型圖片庫自定義上傳文件功能

在哪裏可以設置我的腳本上傳功能?任何人都可以建議?

回答

5

你可能會使用ItemAdding。在ItemAdding事件方法只是通過錯誤消息比前檢查成功上傳到Library.if unvalid文檔的文檔的擴展

你的代碼是這樣的:

protected string[] ValidExtensions = new string[] { "png", "jpeg", "gif"}; 

    public override void ItemAdding(SPItemEventProperties properties) 
    { 
     string strFileExtension = Path.GetExtension(properties.AfterUrl); 

     bool isValidExtension = false; 

     string strValidFileTypes = string.Empty; 

     using (SPWeb web = properties.OpenWeb()) 
     { 

       foreach (string strValidExt in ValidExtensions) 
       { 
        if (strFileExtension.ToLower().EndsWith(strValidExt.ToLower())) 
        { 
         isValidExtension = true; 
        } 
        strValidFileTypes += (string.IsNullOrEmpty(strValidFileTypes) ? "" : ", ") + strValidExt; 
       } 

     // Here i am going to check is this validate or not if not than redirect to the 
     //Error Message Page. 
       if (!isValidExtension) 
       { 
        properties.Status = SPEventReceiverStatus.CancelWithRedirectUrl; 
        properties.RedirectUrl = properties.WebUrl + "/_layouts/error.aspx?ErrorText=" + "Only " + strValidFileTypes + " extenstions are allowed"; 

       } 

     } 

    } 
+0

Thnx親愛的everthing是好的....非常感謝你:) – qablan89 2012-04-09 14:00:40

+0

你的歡迎:) – Jigs 2012-04-09 14:02:27

0

你可以使用SPItemEventReceiver您的庫並添加您的邏輯爲ItemUpdating()和ItemAdding()方法。

+0

很抱歉,但在項目中添加事件接收器,仍然沒有上傳的圖像,會給我空例外 – qablan89 2012-04-07 12:47:56

+0

任何一個忠告? – qablan89 2012-04-07 16:32:43

+0

@ qablan89,如果我的理解正確,您需要在上傳前仔細檢查擴展程序。因此,作爲ItemAdding()方法參數的SPItemEventProperties對象的「屬性」包含屬性BeforeUrl和AfterUrl。這些屬性包含用戶上傳的文件的名稱。 – Tannheuser 2012-04-08 08:09:10

0

你可以嘗試創建一個自定義列表模板,在那裏替換默認的NewForm.aspxEditForm.aspx頁面。這些custom form templates不需要包含與默認圖片庫模板中相同的用戶控件和按鈕。您可以創建帶有豐富用戶界面的Silverlight Web部件來上傳圖片,例如你想要區分的越多,代碼越多,你必須寫...

我能想到的一個OOTB解決方案將是一個工作流程,你可以強制每個新的圖片運行,但它會是一個過度的對於最終用戶...

當然,如果您能夠通過使用ItemAdding中的元數據進行驗證(如其他人所建議的那樣),那將會是一個非常節省時間的方法。

--- Ferda