質問

私は期待のようなことを仕事にListItem,BeforeProperties,AfterPropertiesはすべてnull/空です。さんありがとうございます。ファイル名やファイルの内容です。

public class MyItemEventReceiver : SPItemEventReceiver {
    public MyItemEventReceiver() {}
    public override void ItemAdding(SPItemEventProperties properties) {
        SPListItem item = properties.ListItem;
        bool fail = item.File.Name.Equals("fail.txt");
        if (fail) {
            properties.ErrorMessage = "The file failed validation";
            properties.Cancel = true;
        }
    }
}

利用できないItemAddedで非同期的及び必要があり同期しのためにアップロード、表示メッセージはユーザーが行います。

あらゆる提案によりお願い申し上げます。例えば、できるオーバーライドをアップロード。※aspx?

役に立ちましたか?

解決

あなたは、アップロードされたファイルが含まれている必要がありHttpFileCollectionを取得するためのHttpContextを使用することができます。これは、ウェブUIを通じて、個々のファイルのアップロードのために動作します。複数のファイルのアップロードを行う、またはOfficeから直接保存するとのHttpContextを作成しません。このような何かを試してみてください。

private HttpContext context;

public MyItemEventReceiver() {
    context = HttpContext.Current;
}

public override void ItemAdding(SPItemEventProperties properties) {
    HttpFileCollection collection = context.Request.Files;
    foreach (String name in collection.Keys) {
        if (collection[name].ContentLength > 0) {
            // Do what you need with collection[name].InputStream
        }
    }
}

他のヒント

接尾辞に注意してください - "追加を"まだ追加されていなかったため、ヌルになるだろう。使用してみてください - "を追加。"

編集:私は「AfterPropertiesではなく、プロパティは、あなたがどこかにつかむことができるオブジェクトがありますと信じて、私は現時点ではドアの外だけど、私はあなたには、いくつかの投げ関連する方法を見つけるために、Googleで掘るんすることができます確信しています。

Janieが書いたように、

このイベントは、挿入する前にトリガされていますが、使用にItemAddedイベントを持っていないので、BeforePropertiesにアクセスすることができるはずです。

ItemAddingイベントが共通に入力を検証するために使用される

これは、ほとんどの場合、後半になります。

ハッピーコーディング

可を取得するファイル名を使い物件ができます。 SPItemEventProperties.BeforeUrl 含まれます。

できないコンテンツを取得するファイルのファイルであることからよりご提供いただきました会員の SPItemEventProperties.ファイルには書かれているデータベースのいずれかのみが存在するメモリサーバのユーザが接続されます。そのため残念ながら標準的な方法は使用できません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top