Use ContentDispositionHeaderValue.

pull/9426/head
maliming 4 years ago
parent 534fe8f522
commit c69447d732

@ -28,8 +28,9 @@ namespace Volo.Abp.AspNetCore.Mvc.ContentFormatters
if (!remoteStream.FileName.IsNullOrWhiteSpace())
{
//https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition#syntax
context.HttpContext.Response.Headers.Add("Content-Disposition", $"attachment; filename=\"{remoteStream.FileName}\"; filename*=UTF-8''{Uri.EscapeDataString(remoteStream.FileName)}");
var contentDisposition = new ContentDispositionHeaderValue("attachment");
contentDisposition.SetHttpFileName(remoteStream.FileName);
context.HttpContext.Response.Headers[HeaderNames.ContentDisposition] = contentDisposition.ToString();
}
using (var stream = remoteStream.GetStream())

@ -15,7 +15,7 @@ namespace Volo.Abp.AspNetCore.Mvc.ContentFormatters
{
var result = await GetResponseAsync("/api/remote-stream-content-test/download");
result.Content.Headers.ContentType?.ToString().ShouldBe("application/rtf");
result.Content.Headers.ContentDisposition?.FileName.ShouldBe("\"download.rtf\"");
result.Content.Headers.ContentDisposition?.FileName.ShouldBe("download.rtf");
(await result.Content.ReadAsStringAsync()).ShouldBe("DownloadAsync");
}

Loading…
Cancel
Save