2017-01-31 6 views
0

イメージをバイナリに変換してデータベースに格納しようとしています。私はこれを行うためのコードを持っており、いくつかのGoogleの検索の後で、ほとんどの答えは私が書いたコードのようなものです。私が持っているエラーは、私のデータベースにバイナリ形式を見るのではなく、出力としてSystem.byte[]を得ているということです。私もデバッグして同じことをしました。 は、ここに私のデバッグの結果が出力としてSystem.byte[]与えコードasp.netのバイナリ形式の代わりにSystem.byte []を返すバイナリイメージ

if (Upload.HasFile) 
{ 
    HttpPostedFile postedFile = Upload.PostedFile; 
    string filename = Path.GetFileName(postedFile.FileName); 
    string fileExtension = Path.GetExtension(filename); 
    int filesize = postedFile.ContentLength; 
    if (fileExtension.ToLower() == ".jpg") 
    { 
     Stream stream = postedFile.InputStream; 
     BinaryReader binaryreader = new BinaryReader(stream); 

     byte[] bytes = binaryreader.ReadBytes((int)stream.Length); 

     Debug.WriteLine(bytes); 
    } 
} 

の一部です。あなたが本当にバイナリ形式を使用したい場合は、次のことができDBストレージの文字列に

var storedString = Convert.ToBase64String(bytes); 

をバイト配列に変換して格納されている文字列

bytes = Convert.FromBase64String(storedString); 

からバイト配列を取得することができます

+0

'Debug.WriteLine(bytes)'は 'bytes.ToString()'の結果を出力します。 'byte []'の場合、結果は型名です。実際のバイト数を見たい場合は、バイト[]を反復して一度に1バイトずつ出力する必要があります。 – user1429080

+0

System.byte []はバイナリです...計算のバイナリ値(0または1)をビットと呼びます。バイトは8ビットで構成されています(つまり00110101) – Ben

+0

ほとんどの場合、 'Debug.WriteLine'コールのようにデータを文字列に変換することによって問題が発生することは間違いありませんが、挿入を実行するので、この文字列変換がどこに起こっているのかを指摘できません。 –

答えて

0

SoapHexBinaryクラス、特にParse()メソッドとValueプロパティを調べてください。

+2

データベースがまともなバイナリデータ型を持っている場合、文字列に変換する* need *はありません。 –

関連する問題