2009-06-12 9 views
4

SharePointコピーWebサービスのCopyIntoItemsメソッドを使用して、ドキュメントライブラリをSharePoint内のドキュメントライブラリにロードしようとしています。SharePointコピーWebサービスのCopyIntoItemsメソッドをどのように使用しますか?

以下のコードは実行され、0(成功)を返します。また、CopyResult []配列は、1つの値と「成功」の結果を返します。しかし、私は図書館のどこにでもその文書を見つけることができません。

  1. は、誰もが自分のコードに何かを参照するか、変更を提案することができ:

    私は2つの質問がありますか?

  2. 誰も私がどのようにサーバー側でこれをデバッグすることができます示唆することができます。私はSharePointに多大な経験がありません。もし私が何が起きているのかをログで知ることができれば、それは何が起こっているのかを理解するのに役立ちます。

コードサンプル:物事が働いてしまった

string[] destinationUrls = { Uri.EscapeDataString("https://someaddress.com/Reports/Temp") }; 

SPCopyWebService.FieldInformation i1 = new SPCopyWebService.FieldInformation { DisplayName = "Name", InternalName = "Name", Type = SPListTransferSpike1.SPCopyWebService.FieldType.Text, Value = "Test1Name" }; 
SPCopyWebService.FieldInformation i2 = new SPCopyWebService.FieldInformation { DisplayName = "Title", InternalName = "Title", Type = SPListTransferSpike1.SPCopyWebService.FieldType.Text, Value = "Test1Title" }; 

SPCopyWebService.FieldInformation[] info = { i1, i2 }; 

SPCopyWebService.CopyResult[] result; 

byte[] data = File.ReadAllBytes("C:\\SomePath\\Test1Data.txt"); 

uint ret = SPCopyNew.CopyIntoItems("", destinationUrls, info, data, out result); 

編集:

私はのSourceURLフィールドに "http://null" を追加することにより、作業の私のコードを得ました。 Natの答えはおそらくその理由のために働くだろう。ここで私はそれを働かせるために変更された行です。

// Change 
uint ret = SPCopyNew.CopyIntoItems("http://null", destinationUrls, info, data, out result); 
+1

Uri.EscapeDataStringではなくUri.EscapeUriStringを使用しますか? –

+0

Uri.EscapeUriStringが私にとってうまくいった。 –

答えて

6

Webサービスを使用して「名前」プロパティを設定しようとしている可能性があります。私はそれをやることに失敗しました。 「名前」を考える あなたは

string targetDocName = "Test1Name.txt"; 
    string destinationUrl = Uri.EscapeDataString("https://someaddress.com/Reports/Temp/" + targetDocName); 
    string[] destinationUrls = { destinationUrl }; 

    SPCopyWebService.FieldInformation i1 = new SPCopyWebService.FieldInformation { DisplayName = "Title", InternalName = "Title", Type = SPListTransferSpike1.SPCopyWebService.FieldType.Text, Value = "Test1Title" }; 
    SPCopyWebService.FieldInformation[] info = { i1}; 
    SPCopyWebService.CopyResult[] result; 
    byte[] data = File.ReadAllBytes("C:\\SomePath\\Test1Data.txt"); 
    uint ret = SPCopyNew.CopyIntoItems(destinationUrl, destinationUrls, info, data, out result); 

注意していくつかの成功を持っていることがあり、ドキュメントの名前です:私は、「ソース」プロパティとして「ターゲット」を使用していました。 Don't quite know why, but it does the trick

+0

ソースURLを入力すると、そのトリックが行われました。ソースURLが含まれていないとエラー情報が返されない理由はわかりません。 –

1

私はあなたがする抱き合わせているものを非常によく理解していなかったが、あなたはSharePointライブラリにローカルディレクトリからファイルをアップロードしようとしているならば、私はあなたがWebクライアントと使用を作成することをお勧めuploadata:

例(VB.NET):

listService.CheckInFile("http://srvasddress/library/filenameexample.doc", "description", "1") 

dim webclient as Webclient 
webClient.UploadData("http://srvasddress/library/filenameexample.doc", "PUT", filebytes) 

次に、あなただけの、リストのWebサービスを使用してファイルをチェックインするようなものを持っています

何か助けてくれたらと思います。

EDIT:Webクライアントの資格情報を設定することを忘れないでください、など

EDIT 2:これを使用して更新metadaフィールド:

listService.UpdateListItems("Name of the Library, batchquery) 

あなたはここで、バッチクエリの構築に関する情報を見つけることができます:link

+0

+1 - これは良いアプローチです。ただし、ファイルに関連付けられているメタデータを同時に設定する必要があります。 –

+0

Metadaデータは、今追加したコードで更新することができます。 – v3ga

1

ソースホールはSharepointで使用されます。これは「ソースドキュメント」へのリンクです。ドキュメントライブラリ内にある項目の上にカーソルを置くと、右側に下向きの三角形が表示されます。それをクリックすると、メニューが表示されます。 [プロパティの表示]オプションをクリックします。このページでは、次の「このアイテムはhttp://nullのコピーです(ソースアイテムへ移動|リンク解除)」

コピー機能を使用しているため、Sharepointは「ソースアイテム」をドキュメント管理機能

関連する問題