3

SharePoint のアイテムの ContentTypeId を取得して、アイテムの完全な URL を取得してバイナリを取得し、別のプラットフォームに送信しようとしています。

ここでは、このコードを element.xml に入れて、選択しているアイテムのリスト ID とドキュメント ID を取得します。その後、それらを SharePoint ダイアログの ASPX ページに送信して、アイテムの宛先を定義します。ポストバックで、バイナリをストリーミングして別のプラットフォームに送信します。問題は次のとおりです。アイテムの完全な URL を取得するには、ListId、ItemId、および ContentTypeId が必要です。ここでバイナリをストリーミングするコードを見つけたので: How to Programatically Download files from sharepoint document library

そして、アイテムの完全な URL が必要です。

何か案が?

ありがとう

var iddocs ='';
var listId ='';
function geturl()
{
  var context = SP.ClientContext.get_current();
  this.web = context.get_web();
  listId = SP.ListOperation.Selection.getSelectedList(); 
  var list = this.web.get_lists().getById(listId);
  var ok = false;
  try
  {
    if ( SP.ListOperation.Selection.getSelectedItems(context) !== false)    
    {
      var items = SP.ListOperation.Selection.getSelectedItems(context);
      var url='listId:'+listId+ ' Number of selected items: ' + items.length ;
      var i = 0;
      if(items.length==0)
      {
      }else{
        while( i != items.length )
        {
          url += ' Doc' + i + ': ' + items[i].id;
          if(i>0){iddocs += '-'};
          iddocs += items[i].id;
          i++;
        };
        ok = true;
        alert(url+' Id of clicked item:'+{ItemId});
        };
    };
  }
  catch(err)
  {
  };
return ok;
};        
function OpenDialog(pidliste) {
    var options = SP.UI.$create_DialogOptions();
    options.width = 600;
    options.height = 600;
    options.title = 'Envoyer vers Nuxeo';
    options.url ='/_Layouts/SPTest.CustomMenuItem/index.aspx?click={ItemId}';
    if(pidliste){options.url += '&ids='+pidliste +'-'+ iddocs;};
    options.dialogReturnValueCallback = Function.createDelegate(null, CloseCallback);
    SP.UI.ModalDialog.showModalDialog(options);
}
function CloseCallback(result, target) {
    if (result == SP.UI.DialogResult.OK) {
    }
    if (result == SP.UI.DialogResult.cancel) {
        SP.UI.Notify.addNotification('Opération canceled', false, '', null);
    }
}
if(geturl())
{
    OpenDialog(listId);
}else{
    alert('Please select an item');
};
4

1 に答える 1

1

私は解決策を見つけました。実際、アイテムには次の方法でアクセスできます。

{SiteUrl}+{ItemUrl}

ダウンロード機能は私の最初の投稿にリンクされています。ただし、複数のアイテムでは機能しません。この方法では、選択しているアイテムのプロパティにしかアクセスできません。

SP ファイルにアクセスする場合は、次の方法で request.credential を設定する必要があることに注意してください。

request.Credentials = System.Net.CredentialCache.DefaultCredentials;

これは、現在使用している資格情報を取得します。

それが役に立てば幸い。

于 2012-05-23T09:50:01.437 に答える