我需要从本地文件系统中选择一个csv文件,并使用jquery将该文件的内容显示为文本。
我将其用于文件上传
<input id = "uploadCSV" type = "file" />
关于其改变事件,
$('#uploadCSV').change(function(e) {
if(e.target.files != undefined) {
var reader = new FileReader();
reader.onload = function(e) {
var lineSplit = e.target.result.split("\n");
var commaSplit = lineSplit[0].split(",");
var content = "";
for(var i = 0; i < commaSplit.length; i++) {
var temp = commaSplit[i];
content = content + " " + temp;
}
};
reader.readAsText(e.target.files.item(0));
var fileContent = reader.result;
alert(fileContent);
}
});
不知何故,这不起作用,当我使用Firefox时,我会在警报中获得null。如果我使用IE8,它崩溃,因为它找不到e.target.result。请指教
我正在寻找将本地文件系统中的csv文件转换为纯文本的最简单方法。
由于
答案 0 :(得分:1)
您正在通过onload事件处理程序向reader.result发出警告,您需要在事件处理程序中移动警报才能使其生效。
您刚才所做的事情将在加载文件之前提醒reader.result,此时结果将为null。
为避免FileReader不受支持而导致任何错误,请在使用前检查if (window.FileReader)
。
将其更改为:
if ((window.FileReader) && (e.target.files != undefined)) {
var reader = new FileReader();
reader.onload = function(e) {
var lineSplit = e.target.result.split("\n");
var commaSplit = lineSplit[0].split(",");
var content = "";
for(var i = 0; i < commaSplit.length; i++) {
var temp = commaSplit[i];
content = content + " " + temp;
}
var fileContent = reader.result;
alert(fileContent);
};
reader.readAsText(e.target.files.item(0));
}
答案 1 :(得分:0)
答案 2 :(得分:0)
我可以使用asp.net mvc来解决这个问题。有关详细信息,请参见下文
@using(Html.BeginForm("ProcessCsv","<YourControllerName>",FormMethod.Post, new {enctype = multipart/form-data" }))
{
<input id = "myUpload" type = "file" name = "fileBaseParam"/>
<input id = "btnSubmit" type = "submit" name = "ProcessCsv" value = "Submit" />
}
在你的控制器中,定义一个actionresult,
[HttpPost]
public ActionResult ProcessCsv(HttpPostedFileBase fileBaseParam)
{
var csvReader = new StreamReader(fileBaseParam.InputStream);
string fileContent = csvReader.ReadToEnd();
}
HttpPostedFileBase是这里的关键概念..您可以从中找到更多相关信息 http://www.codeproject.com/Articles/442515/Uploading-and-returning-files-in-ASP-NET-MVC
希望这些信息将来会对某人有所帮助。
由于