• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
APS-叶童
博客园    首页    新随笔    联系   管理    订阅  订阅

C# Winform 从 .NET 6 WebAPI 下载文件代码示例

.net 6从服务端下载文件代码;

C#从服务端下载文件代码;

WebAPI :

 [HttpGet]
        [Route("[action]")]
        public IActionResult DownloadTemplate()
        {
            try
            {
                // 服务器文件路径
                string url = AppDomain.CurrentDomain.BaseDirectory + @"template\信息导入模板.xlsx";
                //确定模板文件是否存在
                if (!System.IO.File.Exists(url))
                {
                    return BadRequest("服务端模板文件不存在!");
                }
                //返回流
                FileInfo fileMetaInfo = new System.IO.FileInfo(url);
                // 创建文件读取流
                FileStream fileStream = System.IO.File.OpenRead(url);
                // 根据文件后缀获取文件的ContentType
                var fileExtensionContentTypeProvider = new FileExtensionContentTypeProvider();
                // 返回文件contentType类型
                var contentType = fileExtensionContentTypeProvider.Mappings[".xlsx"];
                FileStreamResult result= File(fileStream, contentType, fileMetaInfo.Name);
                return result;
            }
            catch (Exception ex)
            {
                return BadRequest(ex);
            }
        }

 

Winform:

            string requestAddress = ClientUtil.ServerApiUrl + "Info/DownloadTemplate";
            var result = await HttpClientUtil.CreatHttpClient().GetAsync(requestAddress);
            Stream stream = result.Content.ReadAsStream();
            if (result.StatusCode == System.Net.HttpStatusCode.OK && stream != null)
            {
                SaveFileDialog saveFileDialog = new SaveFileDialog();
                saveFileDialog.Filter = "xlsx files(*.xlsx)|*.xlsx";
                saveFileDialog.FilterIndex = 0;
                saveFileDialog.FileName = "信息导入模板";
                saveFileDialog.DefaultExt = "xlsx";
                saveFileDialog.AddExtension = true;
                saveFileDialog.RestoreDirectory = true;
                saveFileDialog.Title = "信息导入模板保存对话框";
                DialogResult dialogResult = saveFileDialog.ShowDialog();
                if (dialogResult == DialogResult.OK)
                {
                    //把 Stream 转换成 byte[]
                    byte[] bytes = new byte[stream.Length];
                    stream.Read(bytes, 0, bytes.Length);
                    //设置当前流的位置为流的开始
                    stream.Seek(0, SeekOrigin.Begin);
                    //把 byte[] 写入文件
                    FileStream fs = new FileStream(saveFileDialog.FileName, FileMode.Create);
                    fs.Write(bytes);
                    fs.Flush();
                    fs.Close();
                }
            }

 

posted @ 2023-03-04 16:45  所念所想亦如是  阅读(1235)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3