我希望能够更改此代码,以便我不必从文件系统上的文件中提取,而是使用保存在数据库中的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;
}
答案 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值从数据库转换为流,我建议您另外提出一个问题。