文件上传的几个示例分享【推荐】

2020-05-27 18:03:15易采站长站整理

首先,我们来看下html主要代码:


<fieldset>
<legend>示例A - 普通表单上传文件,Request.Files获取上传文件</legend>
<form action="/Error/A" method="post" enctype="multipart/form-data">
<input type="file" name="fileA" multiple />
<button type="submit">提交</button>
</form>
</fieldset>

看是简单简单及简短的代码,其实是上传的重要部分必不可少的,下面就来简单总结下:

form元素的action属性:表单提交地址,这里是文件上传的接口地址
必须采用method=”post”提交方式
表单提交数据的格式是enctype=”multipart/form-data”
type=”file”元素必须要有属性name,这里例子是name=”fileA”
type=”file”元素的multiple属性可选,意思是可以选择多个上传文件不用再增加file标签元素来支持上传多个文件了,这个在近几年移动端火热的时候几乎所有最新版本浏览器都支持

再来,我们一起看下后端怎么接受表单提交过来的文件信息,先来看代码:


[HttpPost] public ActionResult A()
{
var sbLog = new StringBuilder(string.Empty);
var fileCount = Request.Files.Count;
//访问上传文件地址
var path = @"http://localhost:1010/{0}";
//保存文件地址
var uploadPath = @"D:DTTest";
sbLog.AppendFormat("上传文件目录:{0}<br/>", uploadPath);
sbLog.AppendFormat("上传文件量:{0}<br/>", fileCount);
for (int i = 0; i < fileCount; i++)
{
var file = Request.Files[i];
if (file == null || string.IsNullOrEmpty(file.FileName)) { continue; }
var fileName = file.FileName;
var fileNewName = DateTime.Now.Ticks + fileName;
sbLog.AppendFormat("第:{0}个文件名称:{1}新名称:{2}下载地址:<a href='{3}' target='_blank'>{2}</a><br/>", i + 1, fileName, fileNewName, string.Format(path, fileNewName));
file.SaveAs(Path.Combine(uploadPath, fileNewName));
}
return Content(sbLog.ToString());
}

这段代码的总要点列举如下:

Request.Files:用来获取上传的文件,所有上传文件都以此来获取,什么文件名称也包含在列表中
path变量:就是咋们在前面配置的iis发布文件夹的url路径,只需要传递上传的文件的名称就可以访问
uploadPath:保存文件地址
通过for循环获取上传上来的文件信息和通过file.SaveAs保存到uploadPath指定的文件夹中去
Path.Combine方法把传递进来的参数拼接长一个磁盘路径如第一个参数值是D:/第二个参数是test.png那么这个方法返回的结果是D:/test.png

最终我这个Action返回的是ContentResult,因为我想在页面输入一些信息好截图哈哈,好了咋们通过复制上面的代码运行起来点”提交”按钮得到的效果如图: