"C:\fakepath\file.txt" 从文件选择器中选择文件时出现问题

"C:\\fakepath\\file.txt" issue when selecting file from filepicker

我想做一个功能,用户可以从文件选择器中选择一个文本文件,然后它会读取文件并在阅读时做一些事情... 我有很多问题,无法使其正常工作。它不会仅将正确的路径发送回控制器 "C:\fakepath\file.txt"。我试着在函数中手动输入一个真实路径,它说找不到文件……我真的被卡住了。 这是我的 html 文件:

 @using (Html.BeginForm("FilterFile", "Home",FormMethod.Post))
{
    <div>
        <input type="file" id="textFile">
    </div>
    <button id="submit-button" type="submit">Filter</button>

    <script src="~/Scripts/jquery-3.3.1.min.js"></script>
}
<script>
        $(document).ready(function () {
            $('form').submit(function () {
                $.ajax({
                    url: '@Url.Action("FilterFile")',
                    type: "POST",
                    dataType: "json",
                    contentType: "application/json; charset=utf-8",
                    data: JSON.stringify({
                        fileName: $('#textFile').val()
                    }),
                    success: function (result) {
                    },
                    error: function (result) {
                        alert("Failed");
                    }
                });
                return false;
            });
        });

这是我的控制器:

 [HttpPost]
        public JsonResult FilterFile(string fileName)
        {
            var resultMessage = "";
            try
            {
                using (var sr = new StreamReader(fileName))

                {
                    string line;

                    while ((line = sr.ReadLine()) != null)

                    {

                        if (line.Split(' ').Count() > 1)
                        {
                             var number = line.Split(' ')[0];
                            line.Replace(number, "");

                        }

                    }

                }

                resultMessage = "The task was completed successfully!!";
            }
            catch(Exception ex)
            {
                resultMessage = ex.Message;
            }
            return Json(resultMessage);

        }
    }

如果有人能帮助我,我将不胜感激,因为我是 programming.Thanks 的新手。

添加HttpPostedFileBase作为方法接收的参数。然后使用 HttpPostedFileBase.InputStream() 获取流。也不要使用 ajax 因为当你想发送文件数据时,它只是发送文件名。

[HttpPost]
public JsonResult FilterFile(HttpPostedFileBase file)
{
    var resultMessage = "";
    try
    {
        if (file != null && file.ContentLength > 0)
        {
            var stream = file.InputStream();

            using (var sr = new StreamReader(stream))
            {

                string line = "";
                while ((line = sr.ReadLine()) != null)
                {

                    if (line.Split(' ').Count() > 1)
                    {
                        var number = line.Split(' ')[0];
                        line.Replace(number, "");

                    }

                }

            }
        }
        resultMessage = "The task was completed successfully!!";
    } catch (Exception ex) {
        resultMessage = ex.Message;
    }
    return Json(resultMessage);
}