0

誰か助けてもらえますか、画像ライブラリにアップロードされた画像タイプを検証したいアップロード機能をカスタマイズしたい

スクリプトはどこに設定できますか?誰でもアドバイスできます???

4

3 に答える 3

5

あなたはUseかもしれませんItemAdding。イベントメソッドではItemAdding、ライブラリに正常にアップロードされる前に、ドキュメントの拡張子を確認してください。無効なドキュメントの場合は、エラーメッセージを使用するよりも

あなたのコードはこのようなものです:

   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";

                }

        }

    }
于 2012-04-07T17:49:15.023 に答える
0

ライブラリにSPItemEventReceiverを使用して、ItemUpdating()メソッドとItemAdding()メソッドにロジックを追加できます。

于 2012-04-07T12:30:28.547 に答える
0

カスタムリストテンプレートを作成して、デフォルトNewForm.aspxEditForm.aspxページとそこにあるページを置き換えることができます。これらのカスタムフォームテンプレートには、デフォルトの画像ライブラリテンプレートと同じユーザーコントロールとボタンを含める必要はありません。画像をアップロードするための豊富なUIを備えたSilverlightWebパーツを作成できます。たとえば、違いが大きくなるほど、記述しなければならないコードが増えます...

私が考えることができるOOTBソリューションは、すべての新しい画像を強制的に実行するワークフローですが、エンドユーザーにとってはかなりやり過ぎでしょう...

もちろん、他の人が示唆しているように、 ItemAddingのメタデータだけを使用して検証できれば、大幅な時間の節約になります。

---フェルダ

于 2012-04-07T17:50:20.447 に答える