分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

ASP.NET Core 上传多文件 超简单教程

发布时间:2023-09-06 02:23责任编辑:苏小强关键词:.NET

示例源码下载地址

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 中新建一个方法 

 ???????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 类里面添加一个方法

 ???????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(); ???????}

贴出一张结构图

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

打开 UploadFiles.cshtml

把以下代码放进去

不用管下面的代码是干什么的

@using System.IO@{ ???ViewData["Title"] = "UploadFiles";}<h2>目录内容</h2><ul class="list-group"> ???@{ ???????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


提示

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

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

ASP.NET Core 上传多文件 超简单教程

原文地址:https://www.cnblogs.com/whuanle/p/10008976.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved