"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);
}
我想做一个功能,用户可以从文件选择器中选择一个文本文件,然后它会读取文件并在阅读时做一些事情... 我有很多问题,无法使其正常工作。它不会仅将正确的路径发送回控制器 "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);
}