.net coreの下で添付ファイルのアップロードとダウンロードの実現
下一篇Netcoreの下でExcelのいくつかの操作と使用について主に紹介した.Netcoreの下でexcelの関連操作、本編は主に下のファイルのアップロードとダウンロードを紹介します.
ファイルのアップロードダウンロードもシステムでよく使われる機能で、くどくどしないで、直接コードに行って具体的な実現を見ます.
.net coreは
httpはデフォルトで一定のアップロードファイルサイズを制限し、
アップロードに対して、ダウンロードは比較的簡単で、指定したファイルを見つけて、ストリームに変換して、通過します.Netcoreが持参した
ファイルのアップロードとダウンロードの基本的な操作を簡単に紹介しましたので、試してみてください.
ファイルのアップロードダウンロードもシステムでよく使われる機能で、くどくどしないで、直接コードに行って具体的な実現を見ます.
ファイルのアップロード
.net coreは
IFormFile
でファイルオブジェクトを受信し、指定された場所にストリームで保存します.[HttpPost("upload")]
//[DisableRequestSizeLimit] // http
[RequestSizeLimit(100*1024*1024)] // http
public async Task Post(List files)
{
try
{
if (files == null || !files.Any())
return AssertNotFound(new ResponseFileResult { Result = false, Code = ResponseCode.InvalidParameters, ErrorMessage = " " });
string filePath = Path.Combine(Directory.GetCurrentDirectory(), BASEFILE, $@"Template");
if (!Directory.Exists(filePath))
Directory.CreateDirectory(filePath);
var result = new ResponseFileResult();
var fileList = new List();
foreach (var file in files)
{
var fileModel = new FileResultModel();
var fileName = ContentDispositionHeaderValue
.Parse(file.ContentDisposition)
.FileName
.Trim('"');
var newName = Guid.NewGuid().ToString() + Path.GetExtension(fileName);
var filefullPath = Path.Combine(filePath, $@"{newName}");
using (FileStream fs = new FileStream(filefullPath, FileMode.Create))//System.IO.File.Create(filefullPath)
{
file.CopyTo(fs);
fs.Flush();
}
fileList.Add(new FileResultModel { Name = fileName, Size = file.Length, Url = $@"/file/download?fileName={newName}" });
}
result.FileResultList = fileList;
return AssertNotFound(result);
}
catch(Exception ex)
{
return AssertNotFound(new ResponseFileResult { Result = false, Code = ResponseCode.UnknownException, ErrorMessage = ex.Message });
}
}
httpはデフォルトで一定のアップロードファイルサイズを制限し、
[DisableRequestSizeLimit]
でhttp制限サイズを無効にしたり、[RequestSizeLimit(1024)]
でhttpアップロードを制限するサイズを指定したりすることができます.ファイルのダウンロード
アップロードに対して、ダウンロードは比較的簡単で、指定したファイルを見つけて、ストリームに変換して、通過します.Netcoreが持参した
File
メソッドはストリームファイルを返し、ファイルのダウンロードを完了します.[HttpGet("download")]
public async Task Get(string fileName)
{
try
{
var addrUrl = Path.Combine(Directory.GetCurrentDirectory(), BASEFILE, $@"{fileName}");
FileStream fs = new FileStream(addrUrl, FileMode.Open);
return File(fs, "application/vnd.android.package-archive", fileName);
}
catch(Exception ex)
{
return NotFound();
}
}
まとめ
ファイルのアップロードとダウンロードの基本的な操作を簡単に紹介しましたので、試してみてください.