Windows Phone から Azure Web ロールでホストされている WCF API に要求を送信するアプリを正常に作成しました。RestSharp を使用してこれを行うには、安らかな POST メソッドを使用しています。それはすべて見事に機能し、画像はストレージに表示されますが、画像は通常の画像ファイルとして開かれません.
それらを以前にアップロードした他の画像と比較すると、メタデータ情報では、表示できない画像には contentMD5 フィールドがあり、「AKEYWqGgulwi6/9/VY2KPg==」のような値に設定されていることが示されています (他の画像はそうではありません) これが原因である可能性がありますファイルの問題?
RestSharp コードを添付しましたが、追加してはいけないものを追加している可能性がありますか? これはイメージストリームが操作される唯一の場所であるため、エラーはここから発生していると思われます。
public void SendRequest(Stream imageStream, string imageID)
{
var client = new RestClient();
client.BaseUrl = apiAddress;
var request = new RestRequest("agerecog/{imageName}", Method.POST);
request.AddUrlSegment("imageName", imageID);
//convert imagestream to byte array
var byteArray = new byte[imageStream.Length];
imageStream.Read(byteArray, 0, (int)imageStream.Length);
//add byteArray to request
request.AddFile("image/jpeg", byteArray, imageID);
var url = client.BuildUri(request).ToString();
client.ExecuteAsync<VizageResponse>(request, response =>
{
//request info. to be added here
});
}
編集 #1 いくつかの作業の後、addFile 行を次のように変更することにしました。
request.AddFile(null, byteArray, null);
これにより、ストリームの長さが変更され、 contentMD5 フィールドも空になりました。ただし、画像はまだ有効な画像ファイルではありません。私が比較している画像が両方とも Windows Phone エミュレーターからのものであるという事実を考えると、それらは両方とも同じ白いページで、隅に小さな黒い四角があるはずですが、ファイル間でサイズが異なります (有効な画像ファイルの長さは 5670 です)。 、元のコードの長さは 6076、上記の 2 番目の addFile を使用した長さは 6239)
編集#2 画像ストリームが送信される前に長さプロパティが6116である場合、さらに分析を行いますが、サーバーに到着すると6370です.264は、RestSharpメソッドのどこかから追加されていると思いますまたはストリームのデータはサーバー側で解釈されます。WCF サービスのコード:
[WebInvoke(UriTemplate = "/agerecog/{imageName}", Method = "POST")]
VizageResult analyseFace(string imageName, Stream imageStream);