我想要做的是,当Web客户端调用端点时,浏览器然后下载文件。基本上,只有下载文件功能。我将如何实现?
在我的API控制器上,我尝试了这2个功能,但没有一个提示浏览器下载文件。我在Swagger上测试了它们。
[HttpGet]
public ActionResult Download()
{
var path = @"C:\Users\farid\Desktop";
return PhysicalFile(path, "text/plain", "Test.txt");
}
[HttpGet]
public IActionResult GetBlobDownload()
{
var content = new FileStream(
@"C:\Users\farid\Desktop\Test.txt",
FileMode.Open,
FileAccess.Read,
FileShare.Read);
var contentType = "text/plain";
var fileName = "testfile.txt";
return File(content, contentType, fileName);
}
或者这仅在使用API时不起作用?我需要使用客户端应用程序对此进行测试吗?该Web应用程序位于ASP.NET MVC上。
如果有任何教程允许用户下载.NET Core中的文件,请给我。我已经用Google搜索了一些,但都没有用(或者我的理解是完全错误的。)
答案 0 :(得分:0)
请明确一点,因为您没有提到您正在从前端进行的呼叫
我假设您正在执行“表单发布”。由于javascript的限制,您无法发送ajax请求来下载文件。
这里是下载文件的代码。
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.PlatformAbstractions;
using System.IO;
namespace DeafultAPICoreProject.Controllers
{
[Route("api/values")]
[ApiController]
public class ValuesController : ControllerBase
{
[Route("download")]
public IActionResult DownloadFile()
{
var filePath = Path.Combine(PlatformServices.Default.Application.ApplicationBasePath, $"TextFile.txt");
var bytes = System.IO.File.ReadAllBytes(filePath);
return File(bytes, "application/octet-stream", "newfile.txt");
}
}
}