2009-06-30 8 views
3

WSS WebServicesを使用したこのアップロード方法の他のすべてのバージョンと同様に、ちょっとしたコードがあります。 1つの大きな問題があります。一度私のドキュメントリストにファイルをアップロードし、コメント/説明を書くためにリスト項目を更新すると、そのファイルはそこに残されています。私が意味することは、このメソッドはアップロードしたファイルを上書きしないということです。外に誰もこの問題をまだ投稿していないようです。誰ですか?WebRequestを使用してSharePoint WSS 3.0にファイルをアップロードPUT

ストリームの代わりにバイト[]を使用する別のバージョンのメソッドがあります。同じ問題です。

注:ライブラリの[編集可能にする前にチェックアウトする]チェックボックスをオフにしました。 No luck tho .. docライブラリではバージョン管理が有効になっていますが、各バージョンごとにメジャーバージョンが作成されています。

private void UploadStream(string fullPath, Stream uploadStream) 
    { 
     WebRequest request = WebRequest.Create(fullPath); 
     request.Credentials = CredentialCache.DefaultCredentials; // User must have 'Contributor' access to the document library 
     request.Method = "PUT"; 
     request.Headers.Add("Overwrite", "t"); 

     byte[] buffer = new byte[4096]; 
     using (Stream stream = request.GetRequestStream()) 
     { 
      for (int i = uploadStream.Read(buffer, 0, buffer.Length); i > 0; i = uploadStream.Read(buffer, 0, buffer.Length)) 
      { 
       stream.Write(buffer, 0, i); 
      } 
     } 
     WebResponse response = request.GetResponse(); // Upload the file 
     response.Close(); 
    } 

オリジナルクレジット:http://geek.hubkey.com/2007/10/upload-file-to-sharepoint-document.html

EDIT - 主要な発見..私は私のNUnitのテストプロジェクトからそれを呼び出したときに、それが正常に動作します。私のWCFアプリケーション(ログオンしたユーザーアカウントで実行しているnUnit、WCFアプリケーションは同じユーザーの下で実行している - 私のアカウント、SharePointでも有効なアクセス許可を持っています)から呼び出すと失敗するようです。

ナッツ。 「どこから始めたらいいの?」と、私は自分自身に夢中になります。

答えて

0

すぐに使用できるSharePoint WebサービスLists.asmxを使用しないのはなぜですか?編集

http://SITEURL/___vti_bin/Lists.asmx

でそれを見つけることができます、私はリンクをチェックアウトし、あなたがボックスのWebサービスのアウトを呼んでいるようです。これはバージョン管理に関連しています。特定のファイルのdoc libに存在する異なるバージョンをチェックアウトできますか?おそらくそれがサービスを通じてマイナーバージョンとして追加されるかどうかを確認してください。

+0

変更される可能性はありますが、わからないことがあります。私は効果なしでこのdocライブラリのバージョン管理をオフにしようとしました。また、他の項目フィールドを更新する2番目の部分を無効にしました。現在、SharePointでは何も起こりません。それは私の目で見たにもかかわらず、決して実行されなかったコードのようなものです。 – misteraidan

0

大文字のTを使ってみましたか? SharePointのwebdavヘッダー処理では、大文字と小文字を区別する可能性はあまりありませんが、で大文字Tを指定しています。 412のエラーコードまたは全く異なるものはありますか?私は多くの、多くの新しいバージョンのファイルの完全なフォルダを見つけてしまった...ファイルが正しい場所に作成されていましたが、更新パスが間違っていた... - 私は少しバグを発見した -

+0

私はもともと大文字のTを持っていて、それを下げました。ここに貼り付けたコードを説明しています。エラーコードはありません。コードは完全に実行されますが、既存のファイルは残ります。バージョン履歴にも変更はありません。それは何も起こったことがないようです。 – misteraidan

関連する問題