0

ユーザーがあらゆる種類のファイルをアップロードできるプログラムがあるとします。ファイルの種類やファイル サイズなどの一般的な情報を取得するだけでなく、ドキュメントと共に転送される可能性のある追加情報 (作成者、最終改訂版などのドキュメント プロパティ) を取得したいと考えています。

受信ドキュメント/ファイルについて事前に何も知らないので、Microsoft Office ドキュメントなどに固有のクラスを単純に使用することはできません。これを一般的に行ってから、動的オブジェクトまたは辞書を作成して、見つかったキー/値の結果を保持する必要があります。

これは可能ですか?もしそうなら、どのように?どんな助けでも大歓迎です!

4

1 に答える 1

0

これについて StackOverflow でいくつかの回答を見つけましたが、ドキュメント プロパティのきれいできれいな辞書を提供してくれるものはありませんでした。これが私が最終的に思いついたもので、うまく機能しているようです(COMフォルダーから「Microsoft Shell Controls and Automation」を参照using Shell32;して、コードに追加する必要があります:

 public static Dictionary<string,string> GetDocumentMetadata(string fileName)
        {
            var properties = new Dictionary<string,string>();
            var arrHeaders = new List<string>();

            var shell = new Shell();
            var objFolder = shell.NameSpace(HttpContext.Current.Server.MapPath("~/RawFiles"));
            var file = objFolder.ParseName(fileName);

            for (var i = 0; i < short.MaxValue; i++)
            {
                var header = objFolder.GetDetailsOf(null, i);
                if (String.IsNullOrEmpty(header))
                    break;
                arrHeaders.Add(header);
            }

            for (var i = 0; i < arrHeaders.Count; i++)
            {
                var value = objFolder.GetDetailsOf(file, i);
                if (!String.IsNullOrEmpty(value))
                {
                    properties.Add(arrHeaders[i], value);
                }
            }

            return properties;
        } 
于 2013-05-26T23:36:04.630 に答える