2015-01-19 4 views
0

Original image added for reference Я хочу отображать изображения в браузере, преобразовывая их в base64 string. Метод преобразования очень прост в следующемБраузер не отображает base64 images

string convertedfile = Convert.ToBase64String(fileData); 

base64 строку

<img src="data:image/jpeg;base64,DQoaCgAAAA1JSERSAAAAFAAAABQIBgAAAI2JHQ0AAAABc1JHQgCuzhzpAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAAl2cEFnAAAAgAAAAIAAMOExmgAAAAZiS0dEAAAAAAAA+UO7fwAAACJ6VFh0U29mdHdhcmUAAHjaKy8v18vMyy5OTixI1csvSgcANtgGWBBTylwAAADzSURBVDhPY/wPBAxUBExUNAts1KiBlIfoaBhiD8N1NycwHLi/mqgAJhiGp15uYtj1aCbD5OMZDDdenSJsKCjr4QJvfzz977GZAS5t2Mvw//P3j/i0/EeoRlP299/v/667UaX//vv7X6MOpxawCThlw04z/H//8zmGa158fPDfsBq3oYzYSpusW8IMPgJVDEa8gQxff31k+P8PaPE/Bob/fxkYuNkEGfZeXskwZ1cnw6Hm9xhhimHgn/8/Gea9SGP485OR4fu37wx/fzIw/PkBwTA2818OIP8fQ0P4XAY2FjYUQ7G6kHBU4lZBMNmQavjgNxAArnYq4oN7ItkAAAAASUVORK5CYII=" alt="Original File"/> 

По какой-то причине мой браузер не может отображать его. Есть ли какой-либо MIME-тип, который я должен установить в IIS? или что может быть проблемой?

Edit: Для записи данных в файл SQL

  Stream fs = imgUpload.PostedFile.InputStream; 
       BinaryReader br = new BinaryReader(fs); 
       Byte[] bytes = br.ReadBytes((Int32)fs.Length); 
       //string base64String = Convert.ToBase64String(bytes); 
       //imgPicture.Src = "data:image/png;base64," + base64String; 
       SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["connectionString"].ToString()); 
       conn.Open(); 
       using (SqlCommand cmd = new SqlCommand("update tbEHUsers set [email protected] where UserID=101", conn)) 
       { 
        // Replace 8000, below, with the correct size of the field 
        cmd.Parameters.Add("@binaryValue", SqlDbType.VarBinary, -1).Value = bytes; 
        cmd.ExecuteNonQuery(); 
       } 
       conn.Close(); 

Мой метод, чтобы получить данные изображения из SQL (столбец тип данных VARBINARY)

byte[] fileData =null; 
     using (SqlDataReader rdr = CMD.ExecuteReader(CommandBehavior.SequentialAccess)) 
     { 
      if (rdr.Read()) 
      { 

       // For some reason the data being returned is blank 
       // When I run it in SQL I get data being returned. 

       fileData = (byte[])rdr.GetValue(0); 

       using (System.IO.FileStream fs = new System.IO.FileStream("D:\\Testing.jpg", System.IO.FileMode.Create, System.IO.FileAccess.ReadWrite)) 
       { 
        using (System.IO.BinaryWriter bw = new System.IO.BinaryWriter(fs)) 
        { 
         bw.Write(fileData); 
         bw.Close(); 
        } 
       } 
      } 

      rdr.Close(); 
     } 
+1

Я не думаю, ваша строка действительный. Попробуйте использовать этот сайт: http://www.base64-image.de/ – CalC

+0

Вы правы ... но что может быть из-за неправильной строки? ... Я также редактировал вопрос – Tweety01

+0

Код для написания данные в файл выглядят нормально. (Использование 'BinaryWriter' для записи байтов в файл является излишним, но оно работает.) Как вы читаете данные из файла? – Guffa

ответ

2

Данные, которые у вас есть не PNG-изображение. Обменивайте его на реальный образ PNG, и он будет работать.

Например, 10х10 красный квадрат:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAXSURBVChTY/jPwPCfGDyqEC+mtkKG/wCSw8c5Wcde4gAAAABJRU5ErkJggg==">

Вот исходное изображение в виде base64:

<img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAUABQDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAAAAQFBgf/xAAiEAABBAEDBQEAAAAAAAAAAAABAAIDBBEFEkETITFDUbH/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAgP/xAAZEQEBAQADAAAAAAAAAAAAAAAAAQIDERL/2gAMAwEAAhEDEQA/AO/oot+62jW6hALnO2MDjgFx+ngck/pwFUQaxFSuwwyaky7HaeGEtxuilPjDR6ye3JacZJBJbneXM15TdyXpoURFooREQEREH//Z">

+1

Почему downvote? Если вы не объясните, что это такое, что вы считаете неправильным, оно не может улучшить ответ. – Guffa

+0

Наличие атрибута + в атрибуте src не вызовет проблемы для строк base64. Удалите комментарий (т. Е. Server.UrlEncode не требуется). – CalC

+0

@ Guffa жаль, что это изображение jpeg на самом деле .. – Tweety01

Смежные вопросы