• ASP.NET Core文件上传、下载与删除


    首先我们需要创建一个form表单如下:

    <form method="post" enctype="multipart/form-data" asp-controller="UpLoadFile" asp-action="FileSave">

            <div>

                <div>

                    <p>Form表单多个上传文件:</p>

                    <input type="file" name="files" multiple />

                    <input type="submit" value="上传" />

                </div>

            </div>

        </form>

    private IHostingEnvironment _hostingEnvironment;
    public HomeController(IHostingEnvironment hostingEnvironment)
    {

    _hostingEnvironment = hostingEnvironment;
    }

    //[RequestSizeLimit(100_000_000)] //最大100m左右
    //[DisableRequestSizeLimit] //或者取消大小的限制
    public IActionResult Upload()
    {
    var files = Request.Form.Files;

    long size = files.Sum(f => f.Length);

    string webRootPath = _hostingEnvironment.WebRootPath;

    string contentRootPath = _hostingEnvironment.ContentRootPath;
    List<string> filenames=new List<string>();
    foreach (var formFile in files)

    {

    if (formFile.Length > 0)

    {
    string fileExt = Path.GetExtension(formFile.FileName); //文件扩展名,不含“.”

    long fileSize = formFile.Length; //获得文件大小,以字节为单位

    string newFileName = System.Guid.NewGuid().ToString()+ fileExt; //随机生成新的文件名

    var filePath = webRootPath + "/upload/";
    if (!Directory.Exists(filePath))
    {
    Directory.CreateDirectory(filePath);
    }
    using (var stream = new FileStream(filePath+ newFileName, FileMode.Create))

    {
    formFile.CopyTo(stream);
    }
    filenames.Add(newFileName);
    }

    }

    return Ok(new { filenames, count = files.Count,size });
    }
    public IActionResult DownLoad(string file)

    {
    string webRootPath = _hostingEnvironment.WebRootPath;
    var addrUrl = webRootPath+"/upload/"+ file;

    var stream = System.IO.File.OpenRead(addrUrl);

    string fileExt = Path.GetExtension(file);

    //获取文件的ContentType

    var provider = new FileExtensionContentTypeProvider();

    var memi = provider.Mappings[fileExt];

    return File(stream, memi, Path.GetFileName(addrUrl));

    }

    public IActionResult DeleteFile(string file)
    {
    string webRootPath = _hostingEnvironment.WebRootPath;
    var addrUrl = webRootPath + "/upload/" + file;
    if (System.IO.File.Exists(addrUrl))
    {
    //删除文件
    System.IO.File.Delete(addrUrl);
    }
    return Ok(new { file });
    }

  • 相关阅读:
    Matlab 将RGB 图像转换成YCrCb图像
    dotnet中文字符工具类
    dotnet验证参数
    dotnet + LinQ 按照指定的字段 和 排序方式排序
    Angulaur导入其他位置的样式
    Angular4.x跨域请求
    Spring Cloud微服务实战:手把手带你整合eureka&zuul&feign&hystrix
    关于JVM加载class文件和类的初始化
    JVM垃圾回收机制概述
    深入理解JVM
  • 原文地址:https://www.cnblogs.com/cb521413/p/9366156.html
Copyright © 2020-2023  润新知