重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
入门实战-上传文件,几行代码就可以搞定
创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于网站建设、网站制作、杞县网络推广、重庆小程序开发、杞县网络营销、杞县企业策划、杞县品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联公司为所有大学生创业者提供杞县建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com
Asp.Net Core上传文件微软官方给的代码还是很简单的,但是我的开发环境在调试上传时,用谷歌浏览器,微软IE11,以及微软的Edge浏览器都可以正常运行,但是唯独360浏览器的极速和兼容模式,都没有成功。网友提供的一种解决法方案,在保存文件的Action参数中,指定名称,例如:public IActionResult FileUploadSave([FromForm(Name ="upfiles")] IFormFile files),也就是显示声明控件的名称,无奈360浏览器就是不行。
1.第一种实现文件上传方式
(1).创建一个Upfile.cshtml视图
(2).创建一个FileUpController,创建2个UpFile Action,然后要建立构造函数,在构造函数中注入IHostEnvironment,可以使用其访问到根目录等属性。HttpPost类型的UpFile方法,注意参数的使用,其他关键行的代码看注释。这种写法的本质是从form表单集合中获取文件元素,然后进行处理。
private readonly IHostEnvironment _hostEnvironment; public FileUpController(IHostEnvironment hostEnvironment) { _hostEnvironment= hostEnvironment; } [HttpGet] public IActionResult UpFile() { return View(); }
[HttpPost] public IActionResult UpFile([FromForm] IFormCollection fromData) { IFormFileCollection files= fromData.Files; foreach (var formFile in files) { //通过_hostEnvironment.ContentRootPath来获取根目录 string webContentPath = _hostEnvironment.ContentRootPath;//获取项目根目录 var fileExt = formFile.FileName.Substring(formFile.FileName.LastIndexOf('.'));//获取文件扩展名 var fileNew = DateTime.Now.ToString("yyyyMMddHHmmss") + fileExt; //给文件重新命名 string upLoadPath = webContentPath + $@"\UpFiles"; var fileUrl = upLoadPath + $@"\{fileNew}"; //文件重命名防止重复 if (formFile.Length > 0) { using (var stream = new FileStream(fileUrl, FileMode.Create)) { formFile.CopyToAsync(stream); } } var ImageUrl = "../UpFiles/" + fileNew;//设定一个文件新路径 可存入数据库 } return View(); }