2016-09-06 2 views
0

ローカルフォルダからsharepointのライブラリにファイルをアップロードする単純なコンソールアプリケーションがあり、そのフォルダをダウンロードする方法もありますが、手動で有効化されたURLを使用していますウェブサイトでしかし、私はアップロードしたファイルと同じファイルを後でダウンロードする必要があります。これはテストのためのもので、ダウンロードしたファイルを見るためには何が必要ですか?ここに私のアップロード方法は次のとおりです。Sharepointの特定のライブラリからファイルをダウンロード

static void o365SaveBinaryDirect(ClientContext o365Context, string o365LibraryName, string o365FilePath, string o365FileName) { 

     Web o365Web = o365Context.Web; 
     if (!LibraryExist(o365Context, o365Web, o365LibraryName)) { 
      CreateLibrary(o365Context, o365Web, o365LibraryName); 
     } 
     using (FileStream o365FileStream = new FileStream(o365FilePath, FileMode.Open)) { 
      Microsoft.SharePoint.Client.File.SaveBinaryDirect(o365Context, string.Format("/{0}/{1}", o365LibraryName, o365FileName), o365FileStream, true);     
     } 
    } 

今、私はダウンロードし、この方法があります:

private static void DownloadFile(string webUrl, ICredentials credentials, string fileRelativeUrl) { 
     using (var client = new WebClient()) { 
      client.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f"); 
      client.Headers.Add("User-Agent: Other"); 
      client.Credentials = credentials; 
      client.DownloadFile(webUrl, fileRelativeUrl); 

     } 
    } 

を、私はそれ以降のファイルをダウンロードするためのURLを生成する必要があります。

答えて

0

ヒント:CSOMからMicrosoft.SharePoint.Client.File.SaveBinaryDirect方法が APIがファイルをuploafdingために使用されているので、ライブラリのURLが

  • ライブラリタイトルと同じではありませんので、ライブラリのタイトルに基づいてファイルのURLを生成する

    次の例は、ファイルをライブラリにアップロードしてからダウンロードする方法を示しています。

    var sourceFilePath = @"c:\in\UserGuide.pdf"; //local file path; 
    var listTitle = "Documents"; //target library; 
    
    var list = ctx.Web.Lists.GetByTitle(listTitle); 
    ctx.Load(list.RootFolder); 
    ctx.ExecuteQuery(); 
    
    var targetFileUrl = string.Format("{0}/{1}", list.RootFolder.ServerRelativeUrl, Path.GetFileName(sourceFilePath)); 
    
    //upload a file 
    using (var fs = new FileStream(sourceFilePath, FileMode.Open)) 
    { 
         Microsoft.SharePoint.Client.File.SaveBinaryDirect(ctx, targetFileUrl, fs, true); 
    } 
    
    //download a file 
    var downloadPath = @"c:\out\"; 
    var fileInfo = Microsoft.SharePoint.Client.File.OpenBinaryDirect(ctx, targetFileUrl); 
    var fileName = Path.Combine(downloadPath, Path.GetFileName(targetFileUrl)); 
    using (var fileStream = System.IO.File.Create(fileName)) 
    { 
         fileInfo.Stream.CopyTo(fileStream); 
    } 
    
  • +0

    あなたはこのコードで私が何を助けてくれたか分かりません。私は今、それについてすべてを理解しています。 –

    関連する問題