2017-09-20 18 views
1

TFS WorkItemで添付ファイルをREST呼び出しで添付しようとすると、添付ファイルのサイズは0KBです。TFS添付ファイルサイズ0KB REST呼び出し

まず、以下のコードを使用して添付ファイルストアに添付ファイルをアップロードします。

https://{instance}/DefaultCollection/_apis/wit/attachments?api-version=1.0&filename="{fileName}" 

私はrest呼び出しによってバイト配列でデータを送信します。その後、私はworkitemで添付ファイルを添付します。

添付ファイルの添付は成功ですが、添付ファイルのサイズはゼロです。KB TFSに問題がありますか、何か間違っていますか?

私はバイト単位でファイルデータを送信していますVSTSのAPI

Dim restClient = New RestClient("Server URL") 

    restClient.Authenticator = New HttpBasicAuthenticator("UserId", "Password") 

    Dim request = New RestRequest("API_Name", Method.POST) 

    request.AlwaysMultipartFormData = False 

    request.AddParameter(String.Format("{0}; charset=utf-8", contentType), File.ReadAllBytes(filePath), ParameterType.RequestBody) 

    request.RequestFormat = DataFormat.Json 

    Dim response As IRestResponse = restClient.Execute(request) 

    Return response 

にアクセスするためのプログラミングのためのC#言語を使用してRESTシャープています。

WorkItemに添付ファイルを添付する。

Dim restClient = New RestClient(ACCESS_URL) 
    restClient.Authenticator = New HttpBasicAuthenticator(USER_NAME, PASSWORD) 
    Dim request = New 
    RestRequest("CollectionName}/_apis/wit/workitems/{WorkItem_ID}", Method.PATCH) 

    request.AddParameter("application/json-patch+json; charset=utf-8", 
    "post_Data", ParameterType.RequestBody) 

    request.RequestFormat = DataFormat.Json 

    Dim response As IRestResponse = restClient.Execute(request) 
    Return response 

Post_Dataは空として{ file-contents }を保つとき、私はこの問題を再現することができ、データ

[{ 
    "op": "add", 
    "path": "/relations/-", 
    "value": { 
     "rel": "AttachedFile", 
     "url": "AttachementURI", 

    }] 
+0

あなたが使う "contentTypeの" 何あなたのコード?あなたのコードを "application/octet-stream"コンテンツタイプでテストしましたが、正しく動作します。添付ファイルのサイズは正しく、正常に開くことができます。 –

+0

ええ私はapplication/octet-streamを使っていますが、添付ファイルのサイズは常に0Kです。あなたが投稿したextactと同じコードを使っていますか? –

+0

はい、ほとんど同じです。私はあなたの参照のための答えに自分のコードを追加しました。 –

答えて

0

あなたはPost_Dataの "属性" セクションを逃し、以下で試してみてください。

[{ 
    "op": "add", 
    "path": "/relations/-", 
    "value": { 
    "rel": "AttachedFile", 
    "url": "AttachementURI", 
    "attributes": { 
     } 
}] 
+0

は何か変更があります、それは私が投稿したものと同じです。ここのキャッチは何ですか? –

+0

いいえ、あなたが実際にはC#ではなくVBを使用していることに気づいたので、コードをテストするためのVBプロジェクトを作成しました。それはまだ動作します。 TFSサーバーのバージョンは何ですか?どのようにアップロードされた後、添付ファイルを作業項目に追加しますか?アップロードしようとしているファイルタイプは何ですか? –

+0

TFSサーバーのバージョンは2017update2で​​、VSTSでもあります。私は作業項目を添付するためのコードを表示して私の質問を編集しています。 –

1

のこのタイプを取るJSON文字列です。

したがって、{ file-contents }が指定されていることを確認してください。

作業項目に添付した後、作業項目に 、取付店へupload the attachmentをファイルを添付します。詳細については、Add an attachmentを参照してください。アップロードする

PATCH https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection/_apis/wit/workitems/299?api-version=1.0 
Content-Type: application/json-patch+json 
[ 
    { 
    "op": "test", 
    "path": "/rev", 
    "value": 3 
    }, 
    { 
    "op": "add", 
    "path": "/fields/System.History", 
    "value": "Adding the necessary spec" 
    }, 
    { 
    "op": "add", 
    "path": "/relations/-", 
    "value": { 
     "rel": "AttachedFile", 
     "url": "https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection/_apis/wit/attachments/098a279a-60b9-40a8-868b-b7fd00c0a439?fileName=Spec.txt", 
     "attributes": { 
     "comment": "Spec for the work" 
     } 
    } 
    } 
] 

がC#サンプルの下に参照して添付ファイルを追加します。特定の作業項目に添付ファイルを追加

POST https://{instance}/DefaultCollection/_apis/wit/attachments?api-version={version}&filename=Spec.txt 
Content-Type: application/octet-stream 
{ file-contents } 

添付ファイルをアップロード作業項目:

enter image description here

+0

お返事ありがとうございましたあなたの応答のためにアンディありがとう私はファイルの添付ファイルのためにゼロkbを示すシナリオでデータをアップロードするための休憩シャープポストメソッドを使用しています。 –

+0

@NitinParasharこれは、「rest sharp post method」を使用しているのはどういう意味ですか?ファイルをアップロードするには上記の回答(添付ファイルをアップロード:)で述べたREST APIを使用していますか?ファイルの添付ファイルがゼロkbの場合はどこですか?問題を再現するための詳細な手順を共有し、必要に応じてスクリーンショットをキャプチャしてください。 –

+0

Andy私はC#言語を使用しています。Sharp postメソッドを添付しています。上記の質問を編集してください。 –

関連する問題