gpt4 book ai didi

asp.net-mvc - 在 MVC 中读取和显示上传的文本文件

转载 作者:行者123 更新时间:2023-12-04 12:25:17 25 4
gpt4 key购买 nike

是否可以读取上传的文本文件,例如 .txt 并在文本框中显示内容?我想对上传的文件进行文件转换。我已经设法上传和验证我想要的文件,只需单击一个按钮即可阅读内容并将它们显示在准备转换的文本框中。我该怎么做呢?
上传类

public class UploadedFile
{
public long Size { get; set; }
public string Path { get; set; }
public string Name { get; set; }
// public int Length { get; set; }
public string extension { get; set; }
}

public class HomeController : Controller
{
[HttpGet]
public ActionResult Index()
{
ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";

return View();
}
[HttpPost]
public ActionResult Index(HttpPostedFileBase file)
{
var supportedTypes = new[] { "txt", "rtf", "html", "xaml", "xslx" ,"pdf", "doc", "docx", "csv" };

var fileExt = System.IO.Path.GetExtension(file.FileName).Substring(1);

if (!supportedTypes.Contains(fileExt))
{
ModelState.AddModelError("file", "Invalid type. Only the following types (txt, rtf, html, xslx, pdf, xaml, doc, docx, csv) are supported.");
return View();
}
if (file.ContentLength > 200000)
{
ModelState.AddModelError("file", "The size of the file should not exceed 200 KB");
return View();
}
if (file.ContentLength > 0)
{


var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/uploads"), fileName);
file.SaveAs(path);
}

return RedirectToAction("Index");
}

public ActionResult About()
{
var uploadedFiles = new List<UploadedFile>();
var files = Directory.GetFiles(Server.MapPath("~/uploads"));
foreach(var file in files)
{
var fileInfo = new FileInfo(file);
var uploadedFile = new UploadedFile() {Name = Path.GetFileName(file)};
uploadedFile.Size = fileInfo.Length;
uploadedFile.extension = Path.GetExtension(file);

uploadedFile.Path = ("~/uploads/") + Path.GetFileName(file);

uploadedFiles.Add(uploadedFile);
}
return View(uploadedFiles);
}
}

到目前为止,上传的文件都列在表格中。如果单击按钮并将内容放在表格下方的文本区域内,我想阅读并显示内容。所以我可以执行转换。

enter image description here
我将如何实现这一目标?谢谢
`<script>$('btnreadfile').click(function () {
document.location = '@Url.Action("ReadTextFile","Home")'; });</script>
<input id="btnreadfile" name="btnReadFile" type="submit" value="Read File"/>

`My button Code

最佳答案

工作代码。全面测试

在你 _Layout.cshtml

<head>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
</head>

在您的 关于.cshtml

表加价
<table style="background-color: lightgreen; border: solid 2px black;">
<tr>
<td>
<b>Name</b>
</td>
<td>
<b>Size</b>
</td>
<td>
<b>Preview</b>
</td>
<td>
<b>Read File</b>
</td>
</tr>
@foreach (var file in Model)
{
<tr>
<td>
@file.Name
</td>
<td>
@(file.Size / 1000) KB
</td>
<td>
@(file.extension)
</td>
<td>
<input id="btnreadfile" name="@file.Name" class='btnClick' type="button" value="Read File"/>
<textarea rows="4" cols="50">
</textarea>
</td>
</tr>
}
</table>

在您的 关于.cshtml 一路底部添加这个脚本
<script>
$.ajax({
url: "/Home/ReadTextFile",
type: "GET",
data: { fileName: $(this).attr("name") },
DataType: "text",
success: function (str) {
alert(str);
$("textarea").val(str); // this line has to be replaced with more dynamic jQuery selector that can select this button next textarea
//$(this).next("textarea").val(str);
},
error: function (err) {
alert(err);
}
});
});
</script>

在您的 Controller 中
  • 添加引用 using System.Runtime.InteropServices.ComTypes;
  • 添加 JsonResult 方法

  • public JsonResult ReadTextFile(string fileName)
    {
    string retString = string.Empty;
    string path = Path.Combine(Server.MapPath("~/uploads") , fileName );
    if (System.IO.File.Exists(path))
    {
    if (Path.GetExtension(path) == "doc" || Path.GetExtension(path) == ".docx")
    {
    Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();
    object miss = System.Reflection.Missing.Value;
    object readOnly = true;
    object wordPath = path;
    Microsoft.Office.Interop.Word.Document docs = word.Documents.Open(
    ref wordPath,
    ref miss,
    ref readOnly,
    ref miss, ref miss, ref miss,
    ref miss, ref miss, ref miss,
    ref miss, ref miss, ref miss,
    ref miss, ref miss, ref miss, ref miss);
    for (int i = 0; i < docs.Paragraphs.Count; i++)
    {
    retString += " \r\n " + docs.Paragraphs[i + 1].Range.Text.ToString();
    }
    }
    else if (Path.GetExtension(path) == "txt")
    {
    using (StreamReader sr = new StreamReader(path))
    {
    retString = sr.ReadToEnd();
    }
    }
    }
    return Json(retString, JsonRequestBehavior.AllowGet);
    }

    注意:我考虑过只读取扩展名为 .doc, .docx and .txt 的文件应进一步处理任何其他扩展

    关于asp.net-mvc - 在 MVC 中读取和显示上传的文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16448780/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com