using Ips.Library.Basic; using Ips.Library.WebApi; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.StaticFiles; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Ips.Service.CapServer.Controllers { /// /// 文件操作接口 /// 可通过浏览器访问http://{baseurl}/data预览文件 /// public class AdFileController : BaseController { /// /// 下载采集的文件 /// /// 采集返回的名称 /// [HttpGet] public IActionResult Download(string fileName) { if (string.IsNullOrWhiteSpace(fileName)) { return NotFound("必须指定要下载的文件"); } if (fileName.StartsWith("/")) fileName = fileName.Substring(1); string localFile = Path.Combine(AppConst.DataDir, fileName); try { if (!System.IO.File.Exists(localFile)) { IpsLogger.Error($"下载失败,文件[{localFile}]不存在"); return NotFound($"文件[{fileName}]不存在"); } var fileStream = new FileStream(localFile, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite, 4096, true); //异步读取文件 return File(fileStream, "application/octet-stream", fileName, true); //为true时,支持断点续传 } catch (Exception ex) { IpsLogger.Error($"文件[{localFile}]下载失败", ex); return NotFound($"文件[{fileName}]下载失败"); } } } }