Загрузка файла - ASP.NET Core MVC - PullRequest
0 голосов
/ 30 октября 2018

У меня есть контактная форма в моем проекте ASP.NET Core, и она работает. Но сейчас я хочу загрузить файл. Вот мой код:

Модель:

namespace WebApplication1.Models
{
    public class MailModels
    {
        [StringLength(5)]
        public string Name { get; set; }
        [StringLength(5)]
        public string SurName { get; set; }
        //[StringLength(5, ErrorMessage = "First name cannot be longer than 50 characters.")]

        public string Email { get; set; }
        public string Telephone { get; set; }
        [StringLength(1000)]
        public string Message { get; set; }
        public IFormFile FileUploading { get; set; }
    }
}

Вид (часть вида):

<label class="file_uploading">
    @Html.TextBoxFor(m => m.FileUploading, new { type = "file", @class = "input-file" })
</label>

Контроллер (часть контроллера):

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Index2(MailModels e, IFormFile file)
{
    if (ModelState.IsValid)
    {
        StringBuilder message = new StringBuilder();
        MailAddress from = new MailAddress(e.Email.ToString());
        message.Append("Name: " + e.Name + "\n");
        message.Append("Surname: " + e.SurName + "\n");
        message.Append("Email: " + e.Email + "\n");
        message.Append("Telephone: " + e.Telephone + "\n\n\n");
        message.Append("Text: " + e.Message + "\n");

        MailMessage mail = new MailMessage();
        SmtpClient smtp = new SmtpClient();
        // .....

1 Ответ

0 голосов
/ 30 октября 2018

Сначала удалите MailModels e из параметров и проверьте этот учебник для полной справки

Edit1:
Ваш код должен выглядеть так:

[HttpPost("UploadFiles")]
public async Task<IActionResult> Post(List<IFormFile> files)
{
long size = files.Sum(f => f.Length);

// full path to file in temp location
var filePath = Path.GetTempFileName();

foreach (var formFile in files)
{
    if (formFile.Length > 0)
    {
        using (var stream = new FileStream(filePath, FileMode.Create))
        {
            await formFile.CopyToAsync(stream);
        }
    }
}

// process uploaded files
// Don't rely on or trust the FileName property without validation.

return Ok(new { count = files.Count, size, filePath});
}

и ваша форма должна выглядеть примерно так:

<form method="post" enctype="multipart/form-data" asp-controller="UploadFiles" asp-action="Index">

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