Base64到StreamContent上传图像而不从文件系统中提取

时间:2015-07-20 16:35:44

标签: c# stream

我希望能够更改此代码,以便我不必从文件系统上的文件中提取,而是使用保存在数据库中的base64值。这里有没有人对StreamContent有足够的了解,知道我需要做些什么来实现这个目标?

该文件是一个jpeg文件。

    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 = "\"signature\"",
        };
        fileContent.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg");

        return fileContent;
    }

1 个答案:

答案 0 :(得分:0)

StreamContent只是另一个流的包装器(在您的示例中从fileInfo.OpenRead()返回的流)。您需要做的就是用数据库中的流替换该流并返回该流。您也可以使用fileInfo.Name来代替Path.GetFileName(fullFilePath)

private Stream GetStreamFromDatabase(string fullFilePath)
{
    //TODO
}

private static StreamContent FileMultiPartBody(string fullFilePath)
{

    var fileContent = new StreamContent(GetStreamFromDatabase(fullFilePath))

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

    return fileContent;
}

如果您需要帮助将base64值从数据库转换为流,我建议您另外提出一个问题。