ファイル名を変えてダウンロードさせてブラウザに保存させる一連の流れを示すためのコード
実際に使用したソースコードから、一部抜粋、改変しているため、
そのままでは動作しないかもしれません。
■Viewの作成
<form method="post" enctype="multipart/form-data" asp-controller="Test" asp-action="Index">
<input type="file" name="Targetfile" />
<input type="submit" value="Upload" />
</form>
■アクションメソッドの作成
using System;//GET時に使用されるアクションメソッド
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Http;
using System.IO;
public IActionResult Index()//ポスト時に使用されるアクションメソッド
{
return View();
}
[HttpPost]
public IActionResult Index(IFormFile Targetfile)
{
var filename = "Result-"+System.DateTime.Now.ToString("yyyyMMddHHmmss");
//アップロードされたTargetfileをSaveAndGetFilePathで一時ファイルに保存し、それをGetStreamとFileを経てブラウザに返す。
return File(GetStream(SaveAndGetFilePath(Targetfile)), "APPLICATION/octet-stream",filename);
}
//IFormFile型のオブジェクトからファイルを抽出しファイルに保存し、ファイルパスを返すメソッド
private String SaveAndGetFilePath(IFormFile ff)
{
String filePath = Path.GetTempFileName();
if (ff.Length > 0)
{
using (var stream = new FileStream(filePath, FileMode.Create))
{
ff.CopyTo(stream);
}
return filePath;
}
else
{
return null;
}
}
//ファイルパスからストリームを生成するメソッド
private Stream GetStream(String filepath)
{
var memory = new MemoryStream();
using (var stream = new FileStream(filepath, FileMode.Open))
{
stream.CopyTo(memory);
}
memory.Position = 0;
return memory;
}
<Fileメソッド>
Microsoft.AspNetCore.Mvc.ControllerBase.File メソッド
○引数(オーバーロードが11もある。)
上記で使用しているものについて
・System.IO.Stream型
・コンテンツタイプを表す文字列
・ダウンロード時のファイル名を表す文字列
○返す値
Microsoft.AspNetCore.Mvc.FileStreamResult 型
クライアントにステータス200OKを返して、Stream型で指定された内容をファイルとしてダウンロードさせる。
新品価格
¥3,456から (2018/5/21 15:43時点) |
<参考>
・File uploads in ASP.NET Core
< https://docs.microsoft.com/en-us/aspnet/core/mvc/models/file-uploads > 2017年10月9日
・Upload/Download Files in ASP.NET Core 2.0
< https://www.codeproject.com/Articles/1203408/Upload-Download-Files-in-ASP-NET-Core > 2017年10月9日
・Return file in ASP.Net Core Web API
< https://stackoverflow.com/questions/42460198/return-file-in-asp-net-core-web-api > 2017年10月9日
・How do I write out a text file in C# with a code page other than UTF-8?
< https://stackoverflow.com/questions/373365/how-do-i-write-out-a-text-file-in-c-sharp-with-a-code-page-other-than-utf-8 > 2017年10月14日