Browse Source

Use ContentDispositionHeaderValue.

pull/9426/head
maliming 5 years ago
parent
commit
c69447d732
  1. 5
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ContentFormatters/RemoteStreamContentOutputFormatter.cs
  2. 2
      framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ContentFormatters/RemoteStreamContentTestController_Tests.cs

5
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ContentFormatters/RemoteStreamContentOutputFormatter.cs

@ -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())

2
framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ContentFormatters/RemoteStreamContentTestController_Tests.cs

@ -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