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(); } }
浙公网安备 33010602011771号