現在、ユーザーがライブラリから写真を選択 (または写真を撮影) して Imgur にアップロードするアプリを構築しようとしています。Windows Forms アプリケーション用のかなり堅牢な C# Imgur クライアントを既に構築しましたが、残念ながらそれを Windows Phone に移植するのは大失敗でした。
私が使用しているコードは次のとおりです。
public void UploadImageAsync(Stream PhotoStream)
{
try
{
WebClient w = new WebClient();
w.Headers["Content-type"] = "application/x-www-form-urlencoded";
string data = "key="+PublicKey+
"&_fake_status=200"+
"&type=base64"+
"&image="+PhotoStreamToBase64(PhotoStream);
w.UploadStringAsync(new Uri("http://api.imgur.com/2/upload", UriKind.Absolute), "POST", data);
}
catch (Exception ex)
{
}
}
string PhotoStreamToBase64(Stream PhotoStream)
{
MemoryStream memoryStream = new MemoryStream();
PhotoStream.CopyTo(memoryStream);
byte[] result = memoryStream.ToArray();
return System.Convert.ToBase64String(result);
}
興味深い (そしてイライラする) ことは、すべてが正常に機能しているように見え、アップロードが完了すると成功の応答を受け取ることです。ただし、アップロード後に画像を表示しようとすると、結果はhttp://i.imgur.com/NWY0R.jpgのようになります。
これにより、画像ストリームがバイト配列に正しく変換されていないか、ベース 64 文字列に正しく変換されていないと思われます。いずれにせよ、私はそれを機能させることができず、完全に途方に暮れています。誰にもアイデアはありますか?どんな助けでも大歓迎です。