ASP.NET Core CSVファイルをダウンロードするWebAPIを作成する
ASP.NET Core(C#)
のWebAPI
のプロジェクトで、CSV
ファイルをダウンロードするAPI
を作成します。
WebAPI
でファイルをダウンロードする方法については、ASP.NET Core WebAPIでファイルをダウンロードするで紹介していますが、ダウンロードするファイルのデータはバイト配列byte[]
にする必要があります。
出力するCSV
は文字列(string
型)で持っていると思いますので、以下のようにstring
型からbyte[]
に変換する必要があります。
ここでは文字コードはUTF-8
を使用していますが、文字コードは適宜変更してください。
[HttpGet("{id}/[action]")]
public async Task<IActionResult> Download(string id)
{
string csv = "CSVデータ";
byte[] file = Encoding.UTF8.GetBytes(csv).ToArray(); // 文字列をバイト配列に変換する
return File(file, "application/octet-stream", ファイル名);
}
UTF-8
のCSV
をエクセルで開くと文字化けします。
対処法として、BOM
付きのUTF-8
にする必要がありますが、その方法はASP.NET Core C# ダウンロードしたCSVファイルをエクセルで開くと文字化けする場合の対処法で紹介しています。