отправить файл через ajax на другое действие mvc5 c # - PullRequest
0 голосов
/ 01 марта 2019

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

У меня естьпосмотреть, где пользователи будут загружать файл, и я пытаюсь получить этот файл в контроллере, но я всегда получаю 0 в результате Request.Files.Count ();

Действие, вызываемое в ajax, отличаетсяс реального вида.

Я использую MVC5 с ASP.NET и C #

Надеюсь, вы можете мне помочь.Спасибо!.

Мой взгляд:

`@using (Html.BeginForm("editProject", "Projects", new { area = "admin" }, 
FormMethod.Post, new { @class = "form-horizontal", role = "form", enctype = 
"multipart/form-data" }))
{
@Html.AntiForgeryToken()
<input type="file" id="inpFile" name="attachment" multiple>
}`

Javascript:

<script type="text/javascript">
    var res = document.getElementById("inpFile");
    res.addEventListener("change", function () {
    files = document.getElementById("inpFile").files;
    data = new FormData();
    data.append(files[0].name, files);
    $.ajax({
        url: "@Url.Action("SaveFile", "Projects",new { area = "admin" })",
        type: "POST",
        datatype: "json",
        data: data,
        contentType: false,
        processData: false,
        success: function (data) {
            console.log(data.UploadedFileCount + ' file(s) uploaded 
    successfully');
                }
            });
    });
    </script>

Контроллер:

public JsonResult SaveFile()
{           
for (int i = 0; i < Request.Files.Count; i++)
{
    var file = Request.Files[i];
    // saving file...
}
return Json(new { UploadedFileCount = Request.Files.Count });
}

ОБНОВЛЕНИЕ:

Я решил это.

Эта строка была неправильной:

data.append(files[0].name, files);

Должно быть так:

data.append(files[0].name, files[0]);

1 Ответ

0 голосов
/ 06 марта 2019

Я создаю код для вашей проблемы и, надеюсь, он будет очень полезен для вас.

Contoller

 public ActionResult Index()
    {
        return View();
    }
    public ActionResult Upload()
    {
        if (Request.Files["ChequeFile"].ContentLength > 0)
        {
            String path = "~/Content/";
            var fileName = Path.GetFileName(Request.Files["ChequeFile"].FileName);
            Random rnd = new Random();
            int rndnumber = rnd.Next(1, 9999999);
            var filepath = Path.Combine(path, rndnumber + "" + fileName);
            if (System.IO.File.Exists(filepath))
            { System.IO.File.Delete(filepath); }
            Request.Files["ChequeFile"].SaveAs(Server.MapPath(filepath));

            return Json("File Successfully Upload via ajax.");
        }
        else
        {
            return Json("File Must Be Required");
        }
    }

Просмотр

<div class="jumbotron">
<h1>Upload File via Ajax in MVC5 C#</h1>
    <div id="notification"></div>
    <input type="file" required="required" id="ChequeFile" name="ChequeFile" />
    <br />

    <button type="submit" id="uploadss" class="btn btn-primary">Upload File</button>

Jquery с Ajax-запросом

@section scripts{
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
    $(document).on('click', "#uploadss", function () {
        debugger;
        var fdata = new FormData();
        $('input[name="ChequeFile"]').each(function (a, b) {
            var fileInput = $('input[name="ChequeFile"]')[a];
            if (fileInput.files.length > 0) {
                var file = fileInput.files[0];
                fdata.append("ChequeFile", file);
            }
        });
        $.ajax({
            //cache: false,
            //async: true,
            type: "POST",
            url: "/Home/Upload",
            data: fdata,
            contentType: false,
            processData: false,
            success: function (data) {
                //debugger;
                $("#notification").html('');
                $("#notification").html(data);
            },
            error: function (data) {
                $("#notification").html('');
                $("#notification").html(data);
            }
        });
    })
</script>
  }

если вам нужен код, пожалуйста, посетите мой репозиторий github и найдите проект

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