2015-07-20 1 views
2

У меня есть base64, хранящиеся в базе данных (которые на самом деле являются изображениями), которые необходимо загрузить третьим лицам. Я хотел бы загрузить их, используя память, а не сохранять их в качестве изображения, а затем размещать на сервере. Кто-нибудь знает, как преобразовать base64 в поток?Как преобразовать значение base64 из базы данных в поток с C#

Как я могу изменить этот код:

уаг FILEINFO = новый FileInfo (fullFilePath); var fileContent = новый StreamContent (fileInfo.OpenRead());

, чтобы заполнить объект StreamContent базой для интерпретации файла изображения вместо него.

private static StreamContent FileMultiPartBody(string fullFilePath) 
    { 
     var fileInfo = new FileInfo(fullFilePath); 

     var fileContent = new StreamContent(fileInfo.OpenRead()); 

     // Manually wrap the string values in escaped quotes. 
     fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data") 
     { 
      FileName = string.Format("\"{0}\"", fileInfo.Name), 
      Name = "\"name\"", 
     }; 
     fileContent.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg"); 

     return fileContent; 
    } 
+1

http://stackoverflow.com/questions/351126/convert-a-string-to-stream и StreamContent принимает поток, который не должен быть файл, должен иметь возможность передать результирующий поток и перейти оттуда. – Hammerstein

ответ

2

Вы хотите сделать что-то вроде этого, как только вы получили строку из базы данных:

var bytes = Convert.FromBase64String(base64encodedstring); 
var contents = new StreamContent(new MemoryStream(bytes)); 
// Whatever else needs to be done here. 
+0

Это то, что мне нужно. Благодаря willaien –

1

Подобно тому, как альтернативный подход, который хорошо работает с большими потоками (экономит промежуточный массив байт):

// using System.Security.Cryptography 
// and assumes the input stream is b64Stream 
var stream = new CryptoStream(b64Stream, new FromBase64Transform(), CryptoStreamMode.Read); 
return new StreamContent(stream); 
Смежные вопросы