ファイルをユーザーに送信する ASP.NET Core 1.2 アプリケーションがあります。FileResult
この目的でa を使用します。私のコードは次のようになります:
return PhysicalFile(Path.GetFullPath(filePath), QMimeTypeMap.GetMimeType(Path.GetExtension(file.Name)));
https://github.com/aspnet/BasicMiddleware/blob/dev/samples/ResponseBufferingSample/Startup.cs#L17のように応答バッファリングを使用しようとしましたが、うまくいきませんでした。
これはファイルを正しく返しますが、Transfer-Encoding: Chunked
を使用するため、ダウンロードが「不確定」な形式、つまりプログレス バーなしで表示されます。ヘッダーを自分で設定しようとしましたContent-Length
が、自動的に削除されます。
編集:上記のように、私はすでに応答バッファリングを試したことに注意してください。これは私の問題を解決しませんでした。
EDIT 2:以下は、私が使用するコードのSSCCEです
FilesController.cs > アクション
[HttpGet("files")]
public async Task<IActionResult> Download(string driveName, [Bind(Prefix = "id")] uint? fileId = null, [Bind(Prefix = "download")] int forceDownload = 0)
{
// Send file info
string filePath = "...";
HttpContext.Response.Headers["Content-Length"] = new System.IO.FileInfo(filePath).Length.ToString();
return PhysicalFile(Path.GetFullPath(filePath), QMimeTypeMap.GetMimeType(Path.GetExtension(filePath)));
}
Startup.cs > 構成
app.UseStaticFiles();
app.UseResponseBuffering();
app.UseMvc();