質問

尋ねる価値さえないほど単純なものが欠けています...しかし、私はオブジェクトID(GUID)を持っています...それが指し示すドキュメントをどのように把握するのですか?

たとえば、ガイドがあります 137DA01F-9AFD-5d9d-80C7-02AF85C822A8 また、どのファイル/URLを指しているかを知る必要があります。

役に立ちましたか?

解決

spwebを知っているがドキュメントライブラリではない場合は、使用できます SPWeb.GetFile:

SPFile file = web.GetFile(guid);

他のヒント

最も簡単なケース

ドキュメントは、チームサイトテンプレートから標準の「共有ドキュメント」ライブラリに保存されていることをご存知だと思います。このコードを使用する必要があります。

var library = web.GetListFromUrl("http://site/Shared%20Documents/Forms/AllItems.aspx");
var file = library.Items[new Guid("137DA01F-9AFD-5d9d-80C7-02AF85C822A8")].File;
// file.Url - site-relative url of the file
// file.OpenBinary() - get file contents (returns byte[])

MSDN参照:

  1. splistitemcollection.item(guid)
  2. spfile.openbinary (サンプルコード付き)

フォルダー付きライブラリ

より複雑な場合、ドキュメントライブラリにいくつかのフォルダーがある場合、おそらく最良の方法は、この目的のためにCAMLクエリを使用することです。

var query = new SPQuery();
query.ViewAttributes = "Scope=\"Recursive\"";
query.View = 
@"<Where>
  <Eq>
    <FieldRef Name=\"UniqueId\">
    <Value Type='Text'>137DA01F-9AFD-5d9d-80C7-02AF85C822A8</Value>
  </Eq>
</Where>";
var items = library.GetItems(query);

図書館不明

ファイルがどのライブラリに保存されているかわからない場合は、サイトのすべてのライブラリを通過する必要があります。

 foreach (var library in web.Lists)
 {
     if (!library.Hidden && library is SPDocumentLibrary)
     {
         // ... try to get the file and so on
     }
 }

ドキュメントID

また、ドキュメントID機能についてはきっと読む必要があります。これにより、どこからでもドキュメントを参照できます。

http://blogs.technet.com/b/blairb/archive/2009/10/20/new-document-id-feature-in-sharepoint-2010.aspx

注:もちろん、GUIDはドキュメントIDではありません。

あります splist.getItembyuniqueid 機能しますが、どのリストを検索するかわからない場合は、運が悪いです。

SharePoint 2010を使用している場合は、ドキュメントID機能(一意のIDをリストアイテムに添付し、検索を使用してアイテムを見つける)をご覧ください。要件に応じて、ドキュメントIDに同様のアプローチを使用して「findIteminsitecollectionbyuniqueid」を実装し、GUIDが管理されたプロパティを作成し、コードを介して検索を実施することを検討する場合があります。

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