отказался подключаться при загрузке файлов на страницах бритвы - PullRequest
0 голосов
/ 11 апреля 2020

Я пытался заставить загрузку файлов работать в моем проекте. Проблема в том, что всякий раз, когда я нажимаю кнопку отправки, все, что я получаю, это ERR_CONNECTION_REFUSED. Мой код для страницы выглядит следующим образом:

@page
@model EShop.Pages.Administration.UploadImageModel
@{
    ViewData["Title"] = "UploadImage";
    Layout = "~/Pages/Administration/Shared/_AdminLayout.cshtml";
}

<h1>Upload obrázků</h1>

<form method="post" enctype="multipart/form-data">
    <input type="file" multiple asp-for="Uploads" />
    <input type="submit" />
</form>

и:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;

namespace EShop.Pages.Administration
{
    public class UploadImageModel : PageModel
    {

        private IWebHostEnvironment _environment;
        public UploadImageModel(IWebHostEnvironment environment)
        {
            _environment = environment;
        }
        [BindProperty]
        public IList<IFormFile> Uploads { get; set; }

        public async Task OnPostAsync ()
        {
            foreach (var u in Uploads)
            {
                var file = Path.Combine(_environment.ContentRootPath, "uploads", u.FileName);
                using (var fileStream = new FileStream(file, FileMode.Create))
                {
                    await u.CopyToAsync(fileStream);
                }
            }
        }
    }
}

Что-то не так с этим? Или ошибка где-то еще?

1 Ответ

0 голосов
/ 14 апреля 2020

Я могу создать чистый проект и скопировать в ваш код UploadImage, и он работает как положено. Я не знаю, имели ли вы в виду, но вам также, вероятно, понадобится обработчик метода OnGet в вашем классе. Кроме того, в настоящее время вы загружаете только один файл, поэтому я не уверен, что вы хотели объявить закачки в виде списка.

Вот код UploadImage.cs html:

@page
@model StarterWebApplication.Pages.UploadImageModel
@{
    ViewData["Title"] = "UploadImage";
}

<h1>UploadImage</h1>

<form method="post" enctype="multipart/form-data">
    <input type="file" multiple asp-for="Uploads" />
    <input type="submit" />
</form>

Вот код UploadImage.cs html .cs:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;

namespace StarterWebApplication.Pages
{
    public class UploadImageModel : PageModel
    {
        //public void OnGet()
        //{

        //}

        private IWebHostEnvironment _environment;
        public UploadImageModel(IWebHostEnvironment environment)
        {
            _environment = environment;
        }
        [BindProperty]
        public IList<IFormFile> Uploads { get; set; }

        public async Task OnPostAsync()
        {
            foreach (var u in Uploads)
            {
                var file = Path.Combine(_environment.ContentRootPath, "uploads", u.FileName);
                using (var fileStream = new FileStream(file, FileMode.Create))
                {
                    await u.CopyToAsync(fileStream);
                }
            }
        }
    }
}
...