2017-01-10 5 views
0

VS2010をC#で使用してSharePoint 2010アプリケーションを開発しています。共有ドキュメントからローカルフォルダにファイルをコピーするコードが必要です。ファイルをSharePoint 2010からローカルパスにコピーする#

私はこのコードを書いた:

var dest = @"C:\location"; 
var source = @"http://server1/sites/PrDB/"; 
var fileName = "sql.txt"; 

using (SPSite site = new SPSite(source)) 
{ 
    using (SPWeb web = site.OpenWeb()) 
    { 
      SPFile file = web.GetFile("Shared%20Documents/" + fileName); 
      byte[] b = file.OpenBinary(); 
      FileStream fs = new FileStream(dest + "\\" + file.Name, FileMode.Create, FileAccess.ReadWrite); 
      BinaryWriter bw = new BinaryWriter(fs); 
      bw.Write(b); 
      bw.Close(); 
    } 
} 

私はライン上でエラーが発生します:file.OpenBinary();

ファイル "Shared Documents/sql.txt"を開くことができません。

誰でも知っていますか?それをどうやって修正することができますか?

答えて

0

に添付していますが、このコードの1行だけ試行しOOTBソリューションを選択したために開いている場合には私がしようとの時間の後の溶液は、問題が使用してファイルを読み込むとがわかりましたSPWeb:

var dest = @"C:\location"; 
    var source = @"http://server1/sites/PrDB/"; 
    using (SPSite site = new SPSite(source)) 
     { 
       using (SPWeb web = site.OpenWeb()) 
       { 
        SPFolder myfolder = web.GetFolder("Shared Documents"); 
        SPFile file = myfolder.Files[fileName]; 
        byte[] b = file.OpenBinary(); 
        string fullPath =destination + "\\" + file.Name; 
        FileStream fs = new FileStream(fullPath, FileMode.Create, FileAccess.ReadWrite); 
        BinaryWriter bw = new BinaryWriter(fs); 
        bw.Write(b); 
        bw.Close(); 
        } 
       } 
0

ファイルを取得するには、完全なURLを渡す必要があります。以下のコードを試してください:

var dest = @"C:\location"; 
    var source = @"http://server1/sites/PrDB/"; 
    var fileName = "sql.txt"; 

    using (SPSite site = new SPSite(source)) 
    { 
     using (SPWeb web = site.OpenWeb()) 
     { 
       SPFile file = web.GetFile(web.Url +"/Shared%20Documents/" + fileName);// here, this added web url 
    if(file.Exists) 
     { 
       byte[] b = file.OpenBinary(); 
       FileStream fs = new FileStream(dest + "\\" + file.Name, FileMode.Create, FileAccess.ReadWrite); 
       BinaryWriter bw = new BinaryWriter(fs); 
       bw.Write(b); 
       bw.Close(); 
     } 
    } 
} 
+0

web.GetFileが完全なURLを取得しないため、動作しないと思われます。それは既にSPSiteのURLに構築されているので –

+0

私はこのコードを実行し、それは私のために正常に働いた。 –

0

私はコードベースのソリューションを探しています。アンカータグのhref

http://spsite/_layouts/download.aspx?SourceUrl=http://spsite/Documents/sample.docx 
+0

私はバックグラウンドジョブで働いています。私はUIを持っていません。 –

関連する問題