.NET Core WebAPI - Разрешить пользователю скачивать файл - PullRequest
0 голосов
/ 23 мая 2019

Что я хочу сделать, так это то, что когда веб-клиент вызывает конечную точку, браузер загружает файл.По сути, просто возможность загрузки файла.Как бы я этого достиг?

На моем контроллере 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?Нужно ли проверять это с помощью клиентского приложения?Веб-приложение на ASP.NET MVC.

Если есть какое-либо руководство, позволяющее пользователю загружать файлы в .NET Core, пожалуйста, дайте их мне.Я прогуглил несколько, и ни один из них не работает (или мое понимание совершенно неверно).

1 Ответ

0 голосов
/ 23 мая 2019

Просто чтобы было ясно, поскольку вы не упомянули, какой тип звонка вы делаете из веб-интерфейса

Я предполагаю, что вы делаете "пост-форму".Вы не можете отправить ajax запрос на скачивание файла из-за ограничения javascript.

Здесь код для скачивания файла.

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");

        }
    }
}

How to download file in asp.net core

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...