• netcore 使用中间件响应文件下载请求


    添加以下中间件即可

    app.Use(async (context, next) =>
                {
                    var token = context.RequestAborted;
                    var response = context.Response;
    
                    IFileProvider fileProvider = new PhysicalFileProvider(@"E:"); // 文件所在根目录
                    IFileInfo file = fileProvider.GetFileInfo(@"神话26.mp4"); // 文件相对根目录所在地址
                    if (!file.Exists)
                    {
                        await next();
                        return;
                    }
    
                    var suffix = ".mp4";
                    var provider = new FileExtensionContentTypeProvider();
                    var memi = provider.Mappings[suffix];
                    response.ContentType = memi;
                    response.Headers.Add(" Content-Disposition ", " attachment;filename= " + "神话26.mp4");
                    response.ContentLength = file.Length;
    
                    // 提供文件地址即可发送文件
                    //await response.SendFileAsync(@"E:神话26.mp4", token); 
                    // 提供文件信息即可发送文件
                    //await response.SendFileAsync(file,  token);
    
                    // 基于body发送文件,好处是可以控制下载速度
                    var fs = file.CreateReadStream();
                    using (System.IO.BinaryReader br = new System.IO.BinaryReader(fs))
                    {
                        await response.Body.FlushAsync();
                        var kbs = 1024f * 2 / 10;
                        while (fs.Position < fs.Length)
                        {
                            if (token.IsCancellationRequested) break;
                            byte[] bytes = br.ReadBytes((int)Math.Truncate(1024 * kbs));
                            await response.Body.WriteAsync(bytes, 0, bytes.Length);
                            await response.Body.FlushAsync();
                            System.Threading.Thread.Sleep(100);
                        }
                        await response.Body.FlushAsync();
                    }
                });
  • 相关阅读:
    python 发送邮件 email
    python 日志 logging
    python 判断当前环境是什么系统 platform 模块
    pandas to_excel 添加颜色
    Pandas excel 双标题 多级索引 层次化索引 MultiIndex
    windows10 安装 pyltp python3.6
    Python的内存管理
    pandas 中 DataFramt 改变 列的顺序
    元组
    基本语法
  • 原文地址:https://www.cnblogs.com/juanheqiao/p/14204739.html
Copyright © 2020-2023  润新知