简体   繁体   中英

How to convert byte[] to string?

I have an API which reads an uploaded Image and changes it to a byte[] , however in the database the field for where I have to save the image is a string instead of varbinary(MAX) , and I cannot change the field type of the database.

I thought about converting the image to base64 and then storing it but this might cause unnecessary strain on the database.

I have found online the following way but this method can be inconsistent based on the server as the encoding might change:

var str = System.Text.Encoding.Default.GetString(result);

And if I were to use the above method I would need to know what type of encoding does ReadBytes use.

Below is my code:

byte[] fileData = null;
using (var binaryReader = new BinaryReader(image.InputStream))
{
      binaryReader.BaseStream.Position = 0;
      fileData = binaryReader.ReadBytes(image.ContentLength);
}                       

Furthermore, when I converted the image to a base64 and viewed it, only have the image was visible:

var base64String = Convert.ToBase64String(fileData);

use Convert.toBase64String() method or just using MemoryStream class->

// 1.toBase64String()
string str = Convert.ToBase64String(bytes);
// 2.MemoryStream class
using (MemoryStream stream = new MemoryStream(bytes))
using (StreamReader streamReader = new StreamReader(stream))
{
    return streamReader.ReadToEnd();
}

Initialize the BinaryReader with this overload that specifies the encoding.

var binaryReader = new BinaryReader(System.IO.Stream input, System.Text.Encoding encoding);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM