首页 > 其他分享 >.net core文件上传与下载

.net core文件上传与下载

时间:2023-04-07 10:33:53浏览次数:35  
标签:core Html file hostEnvironment using net 上传 public

使用Asp.Net Core 进行文件的上传与下载
控制器代码如下

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

using System.Threading.Tasks;

namespace UploadFileTest.Controllers
{
    public class UploadFileController : Controller
    {
        private readonly IWebHostEnvironment hostEnvironment;

        public UploadFileController(IWebHostEnvironment hostEnvironment)
        {
            this.hostEnvironment = hostEnvironment;
        }
        //返回页面
        public IActionResult Index()
        {
            return View();
        }
        ///单文件上传
        [HttpPost]
        public IActionResult SingleFile(IFormFile file)
        {
            string filePath = Path.Combine(hostEnvironment.ContentRootPath, "Upload", file.FileName);
            using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
            {
                file.CopyTo(fs);
            }
            return Ok("上传成功");
        }

        //多文件上传
        [HttpPost]
        public IActionResult MoreFile(IFormFile[] files)
        {
            foreach (IFormFile file in files)
            {
                string filePath = Path.Combine(hostEnvironment.ContentRootPath, "Upload", file.FileName);
                using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
                {
                    file.CopyTo(fs);
                }
            }

            return Ok("上传成功");
        }
        //结合表单上传
        [HttpPost]
        public IActionResult FormWithFile(Student student)
        {
            string filePath = Path.Combine(hostEnvironment.ContentRootPath, "Upload", student.Image.FileName);
            //做添加操作....
            using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
            {
                student.Image.CopyTo(fs);
            }
            return Ok(student.Name + " " + student.Gender); ;
        }
        //文件下载
        public IActionResult GetFile()
        {
            string fileName = "OIP-C.jfif";
            string file = Path.Combine(hostEnvironment.ContentRootPath, "Upload", fileName);
            FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read);
            return File(fs, "application/octet-stream", fileName);

        }
    }
    public class Student
    {
        public string Name { get; set; }
        public string Gender { get; set; }
        public IFormFile Image { get; set; }
    }
}

视图如下

@model UploadFileTest.Controllers.Student
<div>
    <h2>单文件上传</h2>
    <form action="/UploadFile/SingleFile" method="post" enctype="multipart/form-data">
        @Html.Label("file", "文件上传")
        @Html.TextBox("file", "", htmlAttributes: new { type = "file", name = "file" })
        <input type="submit" value="提交" />
    </form>
</div>

<div>
    <h2>多文件上传</h2>
    <form action="/UploadFile/MoreFile" method="post" enctype="multipart/form-data">
        @Html.Label("files", "文件上传")
        @Html.TextBox("files", "", htmlAttributes: new { type = "file", multiple = "multiple" })
        <input type="submit" value="提交" />
    </form>
</div>


<div>
    <h2>结合表单文件上传</h2>
    <form action="/UploadFile/FormWithFile" method="post" enctype="multipart/form-data">
        <div>
            @Html.LabelFor(x => x.Image)
            @Html.TextBoxFor(x => x.Image, htmlAttributes: new { type = "file" })
        </div>
        <div>
            @Html.LabelFor(x => x.Name)
            @Html.TextBoxFor(x => x.Name)
        </div>
        <div>

            <label>
                男
                @Html.RadioButton("Gender", "男")
            </label>
            <label>
                女
                @Html.RadioButton("Gender", "女")
            </label>
        </div>
        <input type="submit" value="提交" />
    </form>
</div>
<div>
    <h2>文件下载</h2>
    @Html.ActionLink("下载文件","GetFile")
</div>

标签:core,Html,file,hostEnvironment,using,net,上传,public
From: https://www.cnblogs.com/SYF--BLOG/p/17295335.html

相关文章

  • kubernetes API服务器的安全防护
    kubernetesAPI服务器的安全防护 posted@ 2019-08-1114:54  姚红 阅读(998) 评论(0)  编辑  收藏  举报分类: 云计算-k8sundefined目录12.1.了解认证机制12.1.2ServiceAccount介绍12.1.3创建ServiceAccount12.1.4将ServiceAccount分配给pod1......
  • 网络解析(一):LeNet-5详解
    一、前言LeNet-5出自论文Gradient-BasedLearningAppliedtoDocumentRecognition,是一种用于手写体字符识别的非常高效的卷积神经网络。本文将从卷积神经网络结构的基础说起,详细地讲解每个网络层。论文下载:请到文章结尾处下载。我为大家准备了超详细的学习资料,算法工程师的......
  • LeNet详解
    LeNet详解 LeNet-5是一个较简单的卷积神经网络。下图显示了其结构:输入的二维图像,先经过两次卷积层到池化层,再经过全连接层,最后使用softmax分类作为输出层。关于CNN参见:https://blog.csdn.net/qq_42570457/article/details/81458077    LeNet-5这个网络虽然很小,但是......
  • 但telnet不通问题
    pingip确定网络通畅ps-ef|grep端口确定机器本身端口已开放关闭防火墙如果是云服务器,去控制台看看是否开放了端口 ......
  • 华硕 ASUS-PRIME-B560M-A Intel Core i5-11400黑苹果efi引导文件
    原文来源于黑果魏叔官网,转载需注明出处。(下载请直接百度黑果魏叔)硬件型号驱动情况主板ASUS-PRIME-B560M-A处理器IntelCorei5-11400已驱动内存16GBDDR43200Mhz已驱动硬盘WesternDigitalBlackSN750500GB已驱动显卡SAPPHIREPULSERX5600XT6GB已驱动声卡ALC897已驱动网卡I......
  • go net/http包的使用
    前言:Go语言标准库内建提供了net/http包,涵盖了HTTP客户端和服务端的具体实现。使用net/http包,我们可以很方便地编写HTTP客户端或服务端的程序。 正文:包的文档地址:https://go-zh.org/pkg/net/http net/http包使用说明:注册路由http.HandleFunc("/index",getHandle)  ......
  • .net webapi 客户端缓存 服务端缓存
    客户端缓存-ResponseCacheAttribute通过设置HTTP的响应头Cache-Control来完成页面存储到浏览器缓存中,如果请求在缓存有效期间就直接从浏览器缓存中取出数据。只需要在接口上方添加ResponseCacheAttribute特性即可设置客户端缓存。ResponseCacheAttribute可应用于:Razor......
  • Visual Studio 2022 不支持 .NET Framework 4.5 项目的解决办法
    概述升级到VisualStudio 2022后,打开速度快了很多,开发体验也舒服很多。只是使用过程中遇到了一个比较尴尬的问题:默认VisualStudio2022不再支持安装.NETFramework4.5组件,如下图所示:选择组件里面已经不能选择4.5/4.0的框架了。此时如果打开基于.NETFramework4.5......
  • 解决微信小程序主包过大,无法上传代码问题
    1、我的开发工具是HBuilderX,所以,在运行小程序的时候可以勾选运行>运行到模拟器>运行时是否压缩代码,   小程序运行时,这里会提示2、所以,可以选择发行>小程序-微信,注意括号的内容,只适用于uni-app   3、另外,在package.json文件里面加入 --minimize最小压缩 "dev:m......
  • Spartacus 项目中的 facade 和 core 文件夹
    Spartacus是SAPCommerceCloud的storefront框架,feature-libs文件夹下的facade文件夹和core文件夹是Spartacus中用于实现特定功能的库文件夹。它们各自的作用如下:facade文件夹:存放与storefront框架中的各种功能和业务逻辑相关的代码。这些代码通过facade模式......