2012-04-30 15 views
0

byteArraybase64stringに変換するのにC#を使用してConvert.ToBase64String()を使用したい場合は、この文字列をPHPページに送信することでMySQLを使用して保存します。私の問題は、この文字列をbyteArrayに変換することができないということです。この文字列をPHPページから取得した後(そのデータがMySQLから取得された後)、メソッドConvert.FromBase64String()の引数が間違っているとわかります。base64stringをbyte []に​​変換する

どこに問題が発生していないのですが、どのように解決できますか?

マイコード:

public static string BitmapToString(BitmapImage img) 
{ 
    try 
    { 
     WriteableBitmap bmp = new WriteableBitmap(img); 
     byte[] byteArray = null; 
     string str = null; 
     MemoryStream stream = new MemoryStream(); 
     bmp.SaveJpeg(stream, bmp.PixelWidth, bmp.PixelHeight, 0, 100); 
     byteArray = stream.ToArray(); 
     str = Convert.ToBase64String(byteArray); 
     return str; 
    } 
    catch (System.Exception ex) 
    { 
     Console.WriteLine(ex.StackTrace); 
    } 
    return null; 
} 

public static BitmapImage StringToBitmap(string str) 
{ 
    try 
    { 
     byte[] byteArray = Convert.FromBase64String(str); 
     Stream memStream = new MemoryStream(byteArray); 
     BitmapImage img = null; 
     MemoryStream stream = new MemoryStream(byteArray); 
     stream.Seek(0, SeekOrigin.Begin); 
     img = new BitmapImage(); 
     img.SetSource(stream); 
     return img; 
    } 
    catch (System.Exception ex) 
    { 
     Console.WriteLine(ex.StackTrace); 
    } 
    return null; 
} 
+8

文字列を取得してバイト配列に変換しようとするコードを投稿できますか? –

+0

phpページから戻ってきた文字列が実際にbase-64でエンコードされた文字列であることを確認しましたか? – zimdanen

+0

データベースに送信した文字列データが戻ってきたときとまったく同じものであることを確認する価値があります。テーブルの列定義に応じて、文字列にスペースを埋め込むことができます(char vs varchar、nchar vs nvarcharなど)。しかし、Base64の変換方法が空白の後ろに気を配っているかどうかはわかりません。 –

答えて

1

Convert.FromBase64String()Convert.ToBase64String()結果のために動作しますが、Base64Stringに変換されていない、あなたのaplicationでの入力があることができ、これらの例は、失敗することがあります。

これは2つの方法では問題ありません。 Convert.ToBase64String()の結果と、データベースから読み取った結果を確認してください。

+0

Ok、いくつかの特別なcharのように見えますが、PHPに送られたときに変更されました。あなたはどのように変更せずにPHPにデータを送るのか知っていましたか? –

+0

OK !, UrlEncodeメソッドを使用してPHPページにデータを送信する前に問題を解決しました。 –

関連する問題