要在ASP.NET Core控制器中正确地传输文件,您可以按照以下步骤进行操作:
using System.IO;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
IWebHostEnvironment
接口,以获取当前应用程序的根路径:private readonly IWebHostEnvironment _environment;
public MyController(IWebHostEnvironment environment)
{
_environment = environment;
}
HttpGet
方法来处理文件下载请求。在该方法中,使用PhysicalFile
方法来获取要传输的文件的物理路径,并返回一个FileStreamResult
对象:[HttpGet]
public IActionResult DownloadFile()
{
var filePath = Path.Combine(_environment.ContentRootPath, "path/to/file.ext");
var fileStream = new FileStream(filePath, FileMode.Open);
return new FileStreamResult(fileStream, "application/octet-stream");
}
在上面的示例中,将文件的物理路径硬编码为"path/to/file.ext"
。您应根据实际情况替换为要传输的文件的实际路径。
最后,在路由配置中将请求与控制器方法进行关联。例如,在Startup.cs
文件的Configure
方法中添加以下代码:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
请注意,上述示例中的DownloadFile
方法将文件设置为“application/octet-stream”类型,这将导致浏览器下载该文件。如果您希望在浏览器中直接打开文件,可以根据文件类型设置正确的MIME类型。