2015-07-20 90 views
2

我有一些base64存儲在數據庫(實際上是圖像),需要上傳到第三方。我想使用內存上傳它們,而不是將它們保存爲圖像,然後將其發佈到服務器。有沒有人知道如何將base64轉換爲流?如何將base64值從數據庫轉換爲C#流#

我怎樣才能改變此代碼:

VAR的fileInfo =新的FileInfo(fullFilePath); var fileContent = new StreamContent(fileInfo.OpenRead());

改爲使用圖像文件的base64解釋來填充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);