Dotnet核心:从web api发送字节数组作为文件而不将其保存到磁盘

时间:2018-06-15 08:45:55

标签: rest api .net-core attachment sendfile

我有一个web api,需要让用户下载/内联我保存到数据库的二进制文件。

到目前为止,我可以这样做:

MaximumSize

我想知道如何将内存流直接发送到响应中,以避免将文件保存到磁盘。

2 个答案:

答案 0 :(得分:1)

您需要使用HttpResponse.BinaryWriteMemoryStream.WriteTo

Response.Clear();
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", "attachment; filename=file.xls");
Response.BinaryWrite(myByteArray);
// myMemoryStream.WriteTo(Response.OutputStream);
Response.Flush();
Response.Close();
HttpContext.Current.ApplicationInstance.CompleteRequest();

答案 1 :(得分:0)

我找到了一种更简单的方法

string ContentType = (string) (result["content_type"] ?? "");
string FileName = (string) (result["file_name"] ?? "");
byte[] content = (byte[]) result["data"];

_res.ContentType = ContentType;
_res.ContentLength = content.Length;
_res.StatusCode = (int)HttpStatusCode.OK;
_res.Headers.Add("Content-Disposition", $"{Disposition}; filename=\"{FileName}\"");

await _res.Body.WriteAsync(content, 0, content.Length);