示例源码下载地址

https://qcloud.coding.net/api/project/3915794/files/4463836/download

项目地址 https://dev.tencent.com/u/whuanle/p/asp.netcore_file_upload/attachment


创建应用程序

打开VS 2017

  --新建 ASP.NET Core Web 应用程序

    --Web 应用程序(模型视图控制器)

程序名字、路径,默认即可


删除不必要的内容

  • 打开 HomeController.cs 文件,删除所有方法

  • 打开 Views/Home目录,删除所有文件

  • 在应用程序中 新建 file 目录


开始编程

那么,现在来写程序,实现文件上传

第一步  文件上传界面

在 HomeController 中新建一个方法

这个 Action 是上传文件的界面

        public IActionResult Upload(){return View();}

然后在 Views/Home 目录中添加一个视图 Upload.cshtml

把以下代码复制到 Upload.cshtml 中

这部分就是一个文件上传表单,没有什么特殊的,这里不解释代码作用。

@{ViewData["Title"] = "Upload";
}<form method="post" enctype="multipart/form-data" asp-controller="Home" asp-action="UploadFiles"><div class="form-group"><div class="col-md-12"><p>选择要上传的文件</p><input type="file" name="files" multiple /></div></div><div class="form-group"><div class="col-md-12"><input type="submit" value="上传" /></div></div>
</form>


第二步  文件上传功能

打开 HomeController

头部的引用如下

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;

  

在 HomeController 类里面添加一个方法

      [HttpPost]    //上传文件是 post 方式,这里加不加都可以public async Task<IActionResult> UploadFiles(List<IFormFile> files){long size = files.Sum(f => f.Length);       //统计所有文件的大小var filepath = Directory.GetCurrentDirectory() + "\\file";  //存储文件的路径ViewBag.log = "日志内容为:";     //记录日志内容foreach (var item in files)     //上传选定的文件列表
            {if (item.Length > 0)        //文件大小 0 才上传
                {var thispath = filepath + "\\" + item.FileName;     //当前上传文件应存放的位置if (System.IO.File.Exists(thispath) == true)        //如果文件已经存在,跳过此文件的上传
                    {ViewBag.log += "\r\n文件已存在:" + thispath.ToString();continue;}//上传文件using (var stream = new FileStream(thispath, FileMode.Create))      //创建特定名称的文件流
                    {try{await item.CopyToAsync(stream);     //上传文件
                        }catch (Exception ex)        //上传异常处理
                        {ViewBag.log += "\r\n" + ex.ToString();}}}}return View();}

注:IFormFile 的用法将在后面介绍

贴出一张结构图

在 Views/Home 目录中,新建一个视图 UploadFiles.cshtml

打开 UploadFiles.cshtml

把以下代码放进去

下面代码是输出 file目录下的文件,并输出 日志记录

@using System.IO
@{ViewData["Title"] = "UploadFiles";
}<h2>目录内容</h2>
<ul class="list-group">  //razor语法  输出file目录的文件@{var items = Directory.GetFiles(Directory.GetCurrentDirectory() + "\\file");foreach (var item in items){<li class="list-group-item">@item.ToString()</li>}}
</ul>
<hr />
<h2>日志内容</h2>
<p>@ViewBag.log
</p>


运行

按 F5 运行应用

打开

https://localhost:你的端口/Home/Upload

即可看到运行界面

请选择体积较小的文档文件如txt、doc、pdf,图片等进行测试,上传的文件不要太多

不用选择太多、体积大文件、dll文件、可运行文件等等,不然有可能报错。


上传成功

上传成功将会跳转到   https://localhost:你的端口/Home/UploadFiles


补充说明

  • 上传重复文件后,界面会提示

  • 上传太大或太多文件,会报错

  •  IFormFile 的用法

所属命名空间为 Microsoft.AspNetCore.Http

属性

ContentDisposition

获取上载文件的原始Content-Disposition标头。

ContentType

获取上载文件的原始Content-Type标头。

FileName

从Content-Disposition标头中获取文件名。


Headers

获取上传文件的标题字典。

Length

获取文件长度,以字节为单位。

Name

从Content-Disposition标头中获取表单字段名称。

方法

CopyTo(Stream)

将上载文件的内容复制到target流中。

CopyToAsync(Stream, CancellationToken)

异步将上载文件的内容复制到target流中。

OpenReadStream()

打开请求流以读取上载的文件。

转载于:https://www.cnblogs.com/whuanle/p/10008976.html

ASP.NET Core 上传多文件 超简单教程相关推荐

  1. [Asp.net]Uploadify上传大文件,Http error 500 解决方案

    [Asp.net]Uploadify上传大文件,Http error 500 解决方案 参考文章: (1)[Asp.net]Uploadify上传大文件,Http error 500 解决方案 (2) ...

  2. Github上传代码菜鸟超详细教程

    最近需要将课设代码上传到Github上,之前只是用来fork别人的代码. 这篇文章写得是windows下的使用方法. 第一步:创建Github新账户 第二步:新建仓库 第三部:填写名称,简介(可选), ...

  3. ASP.NET Core 上传文件 图片上传

    在 ASP.NET Core 中上传文件 vs2019 选择文件后,调试停止问题 工具 -> 选项 -> 项目和解决方案 -> Web项目 -> 浏览器窗口关闭时停止调试器(s ...

  4. (转)asp.net2.0 上传大容量文件第三方控件radupload

    1.web.config  中需要加入:  <httpHandlers>     <add verb="*" path="Telerik.RadUplo ...

  5. [Asp.net]Uploadify上传大文件,Http error 404 解决方案 - wolfy

    引言 之前使用Uploadify做了一个上传图片并预览的功能,今天在项目中,要使用该插件上传大文件.之前弄过上传图片的demo,就使用该demo进行测试.可以查看我的这篇文章: [Asp.net]Up ...

  6. 如何在ASP.NET Core中上传超大文件

    HTML部分 <%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="index.aspx. ...

  7. .net core 上传excel文件

    引用: using System.Net.Http.Headers; 依赖注入: private readonly IHostingEnvironment hostingEnvironment; pu ...

  8. ASP.NET MVC 上传大文件时404

    前一段时间会员的上传组件改用FLASH的swfupload来上传,既能很友好的显示上传进度,又能完全满足大文件的上传. 后来服务器升级到windows 2008,改为IIS7后,上传文件一旦超过30M ...

  9. Asp.net MVC 上传大文件(超过50M)的设置

    在上传文件时,比较小的文件会直接上传成功,大的文件页面报错:"文件超过了最大请求长度". 经过查明: 需要在配置文件里面设置文件上传限定的两个属性值:maxAllowedConte ...

最新文章

  1. 判断设备网络状态_生成树RSTP,快速生成树协议,交换网络必用的破环协议,面试必备...
  2. 二分图的最大匹配—匈牙利算法
  3. Android方法的概括,android中的Filter接口简介
  4. 电大计算机应用技术基础视频,电大形成性测评-计算机应用技术基础01
  5. cannot resolve symbol什么意思_JavaScript异步编程实现之一:Promise对象是什么?对resolve理解...
  6. java zip ant 密码_java对 zip文件的压缩和解压(ant解决中文乱码)
  7. python删除指定字符_python删除字符串中指定字符的方法
  8. 菜鸟也玩系统安装盘的集成(图文教程)
  9. 完美谢幕,这就是科比!
  10. 设为首页 和 收藏本页
  11. Thingworx入门学习
  12. 微信投票刷票器手机免费版、手机微信投票作弊神器原理
  13. 信息系统项目管理--上午分析笔记
  14. cad插入块_CAD图块全攻略第三期——高级技巧动态块,快来提升逼格!
  15. 结束时间和开始时间不能大于31天
  16. 计算机维修行业中年,35岁改行的5个职业 中年转行也很轻松,你选对了吗
  17. 《安富莱嵌入式周报》第269期:2022.06.06--2022.06.12
  18. Windows11中无法找到Office 2019 application的解决方案
  19. 银行核心操作系统as400 rs6000
  20. 逆向笔记2(数据宽度_逻辑运算)

热门文章

  1. postgresql windows 开发环境搭建
  2. Linux系统搭建FTP服务器
  3. Linq之Expression高级篇(常用表达式类型)
  4. eclipse修改默认工作空间
  5. 将unicode编码的txt文件转为utf-8编码
  6. 802.11 MESH WLANs
  7. mysql 书籍推荐 简书_Mysql复习必备----50条经典Sql语句
  8. invalid character in identifier
  9. pytorch转libtorch,全网最全资料
  10. 5G通信应用到无人驾驶要解决什么问题