如何使用 C# 将数据库中的 base64 值转换为流

Posted

技术标签:

【中文标题】如何使用 C# 将数据库中的 base64 值转换为流【英文标题】:How to convert base64 value from a database to a stream with C# 【发布时间】:2015-10-10 00:55:57 【问题描述】:

我有一些 base64 存储在需要上传到第三方的数据库(实际上是图像)中。我想使用内存上传它们,而不是将它们保存为图像然后将其发布到服务器。这里有人知道如何将 base64 转换为流吗?

如何更改此代码:

var fileInfo = new 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;
    

【问题讨论】:

***.com/questions/351126/convert-a-string-to-stream 和 StreamContent 将接受一个流,不一定是文件,您应该能够将结果流交给它并从那里开始。 【参考方案1】:

从数据库中获取字符串后,您需要执行以下操作:

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

【讨论】:

【参考方案2】:

作为一种替代方法,它适用于大型流(保存中间字节数组):

// using System.Security.Cryptography
// and assumes the input stream is b64Stream
var stream = new CryptoStream(b64Stream, new FromBase64Transform(), CryptoStreamMode.Read);
return new StreamContent(stream);

【讨论】:

以上是关于如何使用 C# 将数据库中的 base64 值转换为流的主要内容,如果未能解决你的问题,请参考以下文章

c# Base64编码和图片的互相转换代码

C# 和 PL/SQL 中的 Base64?

如何将STRING类型的值转换为BASE64 STRING类型的值

将图像(按路径选择)转换为 base64 字符串

在 C# 中将 Base64 字节数组解码为图像

将图像异步转换为 Base64 的 C# 简单应用程序