广告
返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >ASP.NETCore实现多文件上传
  • 620
分享到

ASP.NETCore实现多文件上传

2024-04-02 19:04:59 620人浏览 八月长安
摘要

创建应用程序 打开VS 2017   --新建 ASP.net core WEB 应用程序     --Web 应用程序(模型视图控制器) 程序名字、路径,默认即可 删除不必要的内

创建应用程序

打开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://qcloud.coding.net/api/project/3915794/files/4463836/download

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

到此这篇关于ASP.net core实现多文件上传的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: ASP.NETCore实现多文件上传

本文链接: https://www.lsjlt.com/news/162031.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • ASP.NETCore实现多文件上传
    创建应用程序 打开VS 2017   --新建 ASP.NET Core Web 应用程序     --Web 应用程序(模型视图控制器) 程序名字、路径,默认即可 删除不必要的内...
    99+
    2022-11-12
  • ASP.NETCore实现文件上传和下载
    本文实例为大家分享了ASP.NET Core实现文件上传和下载的具体代码,供大家参考,具体内容如下 一、文件上传 1.1 获取文件后缀 /// <summary> ///...
    99+
    2022-11-13
  • Spring boot实现文件上传实例(多文件上传)
    文件上传主要分以下几个步骤:(1)新建maven java project;(2)在pom.xml加入相应依赖;(3)新建一个表单页面(这里使用thymleaf);(4)编写controller;(5)测试;(6)对上传的文件做一些限制;(...
    99+
    2023-05-31
    spring boot 文件上传
  • SpringBoot实现单文件与多文件上传
    目录一、公共文件存储代码1.FileUploadUtils.java2.FileUtils.java3.MimeTypeUtils.java4.FileException.java5...
    99+
    2022-11-12
  • springboot多文件上传实现使用postman测试多文件上传接口
    使用postman测试多文件上传接口 1、创建测试类(FileController.java) package com.jeff.controller; import java....
    99+
    2022-11-12
  • SpringMVC 单文件上传与多文件上传实例
    一、简述一个javaWeb项目中,文件上传功能几乎是必不可少的,本人在项目开发中也时常会遇到,以前也没怎么去理它,今天有空学习了一下这方面的知识,于是便将本人学到的SpringMVC中单文件与多文件上传这部分知识做下笔记。二、单文件上传1、...
    99+
    2023-05-31
    springmvc 文件上传 多文件上传
  • Java实现多文件上传功能
    文件上传是开发中十分常见的功能,在servlet3.0之前,实现文件上传需要使用一些插件技术,比如: commons-fileupload smartupload ...
    99+
    2022-11-12
  • JS如何实现多文件上传
    这篇文章主要介绍JS如何实现多文件上传,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体实现代码如下所示:<!DOCTYPE html> <html>...
    99+
    2022-10-19
  • SpringBoot如何实现多文件上传
    这篇文章主要介绍“SpringBoot如何实现多文件上传”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot如何实现多文件上传”文章能帮助大家解决问题。1.代码结构:2.Control...
    99+
    2023-07-05
  • Struts2实现多文件上传功能
    前台form 表单:设置method=post,enctype=multipart/form-data。struts2在原有的上传解析器继承上做了进一步封装,更进一步简化了文件上传。Action需要使用3个属性来封装该文件域的信息:(1)类...
    99+
    2023-05-31
    struts2 上传 st
  • springboot多文件上传如何实现使用postman测试多文件上传接口
    这篇文章给大家分享的是有关springboot多文件上传如何实现使用postman测试多文件上传接口的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。使用postman测试多文件上传接口1、创建测试类(FileCon...
    99+
    2023-06-20
  • SpringBoot实现单文件与多文件上传功能
    目录1.单文件上传2.多文件上传1.单文件上传 首先创建一个Spring Boot项目,并添加spring-boot-starter-web依赖 然后创建一个upload.jsp文件...
    99+
    2022-11-12
  • Struts2实现单文件或多文件上传功能
    一、简述Struts2的文件上传其实也是通过拦截器来实现的,只是该拦截器定义为默认拦截器了,所以不用自己去手工配置,<interceptor name="fileUpload" class="org.apache.struts2.in...
    99+
    2023-05-31
    struts2 文件上传 st
  • c# 使用WebRequest实现多文件上传
    目录添加引用参数封装多文件上传封装使用c#中通常使用HttpWebRequest进行HTTP网络请求,HttpWebRequest只对Http请求进行了最简单的封装。如果要利用Htt...
    99+
    2022-11-11
  • Springboot实现上传文件,并实现调用第三方接口post请求多文件上传文件
    项目过程中,经常会有和第三方接口打交道的过程,今天实现调用第三方上传文件的接口!! 通常拿到第三方的接口文档的时候,不是第一时间先写代码,而是详细阅读接口文档。若接口需要第三方提供的基本参数,例如si...
    99+
    2023-09-08
    spring boot java 后端 spring
  • Java如何实现多文件上传功能
    这篇文章主要为大家展示了“Java如何实现多文件上传功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java如何实现多文件上传功能”这篇文章吧。文件上传是开发中十分常见的功能,在servlet...
    99+
    2023-06-20
  • Ajaxupload如何实现多文件上传操作
    这篇文章主要介绍了Ajaxupload如何实现多文件上传操作,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体代码如下所示:<pre&...
    99+
    2022-10-19
  • ajaxFileupload如何实现多文件上传功能
    这篇文章将为大家详细讲解有关ajaxFileupload如何实现多文件上传功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。打开google 搜索"ajaxFi...
    99+
    2022-10-19
  • vue+el-upload实现多文件动态上传
    vue+el-upload多文件动态上传,供大家参考,具体内容如下 使用场景 点击【添加/删除】,可动态增加/删除行数,并为每行上传附件,附件暂存前端,点击【上传】可以将所有附件和部...
    99+
    2022-11-12
  • ASP.NET实现文件上传
    本文实例为大家分享了ASP.NET实现文件上传的具体代码,供大家参考,具体内容如下 .NET中C/S和B/S上传文件不同 B/S中文件上传和C/S中的文件上传性质完全不一样 在C/S...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作