Как сделать FileUpload в ASP.NET Core 6 и вернуть URL-адрес файла

Я собираюсь сохранить локальный файл изображения и вернуть URL-адрес изображения:

      namespace img_cleaner.Controllers;

public class HomeController : Controller
{
    private readonly ILogger<HomeController> _logger;

    public HomeController(ILogger<HomeController> logger)
    {
        _logger = logger;
    }

    public IActionResult Index()
    {
        return View();
    }

    public IActionResult Privacy()
    {
        return View();
    }

    [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
    public IActionResult Error()
    {
        return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
    }

    [HttpPost]
    public async ValueTask<IActionResult> ImageReiceve(ImageUpload imageUpload)
    {
        MultipartFormDataContent form=new MultipartFormDataContent();
        HttpClient client=new HttpClient();
        ArgumentNullException.ThrowIfNull(imageUpload.file);

        var fileStream = imageUpload.file?.OpenReadStream();

        StreamContent content = new StreamContent(fileStream);
        content.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
        {
            Name = "file",
            FileName = imageUpload.file?.FileName
        };

        form.Add(content);

        var response = await client.PostAsync("http://localhost:5000/",form);
        var imgResult = await response.Content.ReadAsByteArrayAsync();
        var imgResultBase64 = Convert.ToBase64String(imgResult);         

        return View(new ImageResult(){ ImageStringbase64 = imgResultBase64 });
    }
};

Program.cs:

      var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllersWithViews();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseStaticFiles();
app.UseHttpsRedirection();

app.UseRouting();
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

0 ответов

Другие вопросы по тегам