Browse Source

Use FileNameStar for RemoteStreamContent FileName

pull/9426/head
Jadyn 5 years ago
parent
commit
534fe8f522
  1. 2
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ContentFormatters/RemoteStreamContentOutputFormatter.cs
  2. 9
      framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/DynamicHttpProxyInterceptor.cs

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

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

9
framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/DynamicHttpProxyInterceptor.cs

@ -57,7 +57,7 @@ namespace Volo.Abp.Http.Client.DynamicProxying
ICancellationTokenProvider cancellationTokenProvider, ICancellationTokenProvider cancellationTokenProvider,
ICorrelationIdProvider correlationIdProvider, ICorrelationIdProvider correlationIdProvider,
IOptions<AbpCorrelationIdOptions> correlationIdOptions, IOptions<AbpCorrelationIdOptions> correlationIdOptions,
ICurrentTenant currentTenant, ICurrentTenant currentTenant,
IRemoteServiceConfigurationProvider remoteServiceConfigurationProvider) IRemoteServiceConfigurationProvider remoteServiceConfigurationProvider)
{ {
CancellationTokenProvider = cancellationTokenProvider; CancellationTokenProvider = cancellationTokenProvider;
@ -115,7 +115,8 @@ namespace Volo.Abp.Http.Client.DynamicProxying
return (T)(object)new RemoteStreamContent(await responseContent.ReadAsStreamAsync()) return (T)(object)new RemoteStreamContent(await responseContent.ReadAsStreamAsync())
{ {
ContentType = responseContent.Headers.ContentType?.ToString(), ContentType = responseContent.Headers.ContentType?.ToString(),
FileName = responseContent.Headers?.ContentDisposition?.FileName?.RemovePreFix("\"")?.RemovePostFix("\"") FileName = responseContent.Headers?.ContentDisposition?.FileNameStar ??
responseContent.Headers?.ContentDisposition?.FileName?.RemovePreFix("\"")?.RemovePostFix("\"")
}; };
} }
@ -278,7 +279,7 @@ namespace Volo.Abp.Http.Client.DynamicProxying
throw new AbpRemoteCallException(errorResponse.Error) throw new AbpRemoteCallException(errorResponse.Error)
{ {
HttpStatusCode = (int) response.StatusCode HttpStatusCode = (int)response.StatusCode
}; };
} }
@ -290,7 +291,7 @@ namespace Volo.Abp.Http.Client.DynamicProxying
} }
) )
{ {
HttpStatusCode = (int) response.StatusCode HttpStatusCode = (int)response.StatusCode
}; };
} }

Loading…
Cancel
Save