Передача нескольких файловых входов на страницу бритвы в виде данных формы jQuery - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть несколько входов в файл формы. Первые два файловых ввода принимают отдельные файлы, а третий принимает несколько файлов. Запрос не пересылается на мои действия.

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

HTML-страница бритвы:

@page
@model IndexModel
@{
    ViewData["Title"] = "Home page";
}

<form method="post" enctype="multipart/form-data">
    <div class="row">
        <div class="col-md-12">
            <input type="file" id="file1" accept=".csv" name="files[0]" class="form-control" />
            <input type="file" id="file2" accept=".txt" name="files[1]" class="form-control" />
            <input type="file" id="fUpload" name="files[2]" accept=".dat" multiple class="form-control" />
        </div>
    </div>
    <div class="row">
        <div class="col-md-12" style="padding-top:10px;">
            <input type="button" id="btnUpload" value="Upload" />
        </div>
    </div>
</form>

Страница бритвы Код действия:

[HttpPost]
public ActionResult OnPostUpload(List<IFormFile> files)
{

    if (files != null && files.Count > 0)
    {
        string folderName = "Upload";
        string webRootPath = _hostingEnvironment.WebRootPath;
        string newPath = Path.Combine(webRootPath, folderName);
        if (!Directory.Exists(newPath))
        {
            Directory.CreateDirectory(newPath);
        }

        foreach (IFormFile item in files)
        {
            if (item.Length > 0)
            {
                string fileName = ContentDispositionHeaderValue.Parse(item.ContentDisposition).FileName.Trim('"');
                string fullPath = Path.Combine(newPath, fileName);

                using (var stream = new FileStream(fullPath, FileMode.Create))
                {
                    item.CopyTo(stream);
                }
            }
        }

        return this.Content("Success");
    }

    return this.Content("Fail");
}

jQuery запрос:

$(document).ready(function () {
    $('#btnUpload').on('click', function () {
        var file1 = $('#file1');
        var file2 = $('#file2');
        var files = $('#fUpload').prop("files");
        var fdata = new FormData();

        fdata.append("files", file1[0].files[0]);
        fdata.append("files", file2[0].files[0]);


        for (var i = 0; i < files.length; i++) {
            fdata.append("files", files[i]);
        }

        if (files.length > 0) {
            $.ajax({
                type: "POST",
                url: "/Index?handler=Upload",
                beforeSend: function (xhr) {
                    xhr.setRequestHeader("XSRF-TOKEN",
                        $('input:hidden[name="__RequestVerificationToken"]').val());
                },
                data: fdata,
                contentType: false,
                processData: false,
                success: function (response) {
                    alert('File Uploaded Successfully.')
                }
            });
        }
        else {
            alert('Please select a file.')
        }
    })
});
...