首先是要了解IFormFile,只要记住一个小概念——即:
IFormFile x = y 的编辑格式(y是指某个文件)可以将文件存储到x中,如果
运用到“接收前端传来的文件数据”上的话就可以写成以下格式:
//下面那个[HttpPost]和[FromForm]是写关于HTTP前端的特性,如果只是在本地的
计算机上运行的话可以不加
[HttpPost]
public a b([FromForm] IFormFile file)
{}
按这样的格式写完后就会获得前端传来的文件file;
储存
接下来就是如何储存了
储存的话有多种方法可以用,下面介绍一种我个人认为最实用的:文件流储存法
注意:是从上文的上传文件的方法里写的哦!
[HttpPost]
public a b([FromForm]IFormFile file)*(1)*
{
/*先创建一个文件流文件到某个地址中
地址中别忘了要包含文件名
FileStream(地址,模式(打开还是创建加打开之类的),
打开方式(读写模式还是其他之类的) );应用到下面的格式就是这样:*/
FileStream fs= new FileStream(“xxxxxx”,
FileMode.xxxxx, FileAccess.xxxxx);*(2)*
file.CopyTo(fs);/*这里的file是指前端传来的文件,也就是*(1)*
中的file参数,fs则是我们创建的文件流文件也就是*(2)*
而CopyTo的用法就如同它的字面意思,在这里就是指
把file文件复制粘贴到fs上*/
file.Close();//别忘了关闭文件!
}
简单的实例演示
/// <summary>
/// 上传文件并存储
/// </summary>
[HttpPost]
public void Upload([FromForm] IFormFile file)
{
//存储到相应地址中
//这个函数是用来获得当前运行程序的地址的(基本上都是在DEBUG中)
var s = AppDomain.CurrentDomain.BaseDirectory;
//file.FileName就是前端给的文件的名字了,然后Path.Combine(a,b)就是把a和b这两个地址相结合
FileStream fs= new FileStream(Path.Combine(s, file.FileName), FileMode.OpenOrCreate, FileAccess.ReadWrite);
file.CopyTo(fs);
fs.Close();
}