【发布时间】:2023-03-30 09:51:02
【问题描述】:
这篇文章可能是重复的,但我没有在堆栈上找到类似的帖子,所以我在这里发帖。
我想将MemoryStream 的列表返回为HttpResponseMessage。我在一个文件夹中有多个文件,我只想将这些文件作为 HttpResponseMessage 从 web api 返回。
public async Task<HttpResponseMessage> GetDicomImage(string FolderName)
{
try
{
var content = new MultipartContent();
MemoryStream dataStream = null;
filePathInfo = Directory.GetFiles(FolderName);
foreach (var dcm in filePathInfo)
{
var dataBytes = File.ReadAllBytes(dcm);
dataStream = new MemoryStream(dataBytes);
content.Add(dataStream);
}
httpResponseMessage = Request.CreateResponse(HttpStatusCode.OK);
httpResponseMessage.Content = content;//new StreamContent(dataStream);
httpResponseMessage.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
//httpResponseMessage.Content.Headers.ContentDisposition.FileName = bookName;
httpResponseMessage.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/dicom");
}
catch (Exception ex)
{
return new HttpResponseMessage
{
StatusCode = HttpStatusCode.InternalServerError,
Content = new StringContent(ex.Message)
};
}
}
这是我的代码,我不明白它出了什么问题。我没有为不同的文件获取多个 MemoryStream。
【问题讨论】:
-
Http 消息不能有二进制数据。您必须使用转换为 Base64 字符串。我会使用具有二进制模式的 FTP。 FTP 是 HTTP 的子类,用于传输文件。二进制模式下的 FTP 会自动转换为 Base64 字符串。
标签: c# asp.net-web-api memorystream