.NET 上传并解析CSV文件存库
1.前端:
放置浏览按钮
<div class="row inner_table text-center">
<input id="fileId" type="file" name="fileString" class="file ">
</div>
2. JS:
注册浏览按钮的事件
var ChoseFile = function () {
$("input[name=fileString]")
.change(function () {
var filePath = $("[name='fileString']");
//读取文件内容
var formData = new FormData();
formData.append('file[]', filePath[0].files[0]);
$.ajax({
url: "XXXXXXXX入库链接",
type: 'POST',
data: formData,
async: false,
cache: false,
contentType: false,
processData: false,
success: function (returndata) {
alert("上传成功");
},
error: function (returndata) {
alert("上传失败");
}
});
});
}
3 controller:
[CustomAuthorize(AuthType.Authrozied)]
public JsonResult DataImport(FormCollection form)
{
string zipDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "templateFiles");
string masterFile = Path.Combine(zipDir, "template" + ".csv");
if (!Directory.Exists(zipDir))
{
Directory.CreateDirectory(zipDir);
}
var file = Request.Files[];
//上传
file.SaveAs(masterFile);
DataTable dt = GetCSVToData(masterFile);
List<ScheduleTableInfo> infos = new List<ScheduleTableInfo>();
foreach (DataRow dataRow in dt.Rows)
{
ScheduleTableInfo info = new ScheduleTableInfo();
info.TemplateName = dataRow["标题名1"].ToString();
info.SumLevelName = dataRow["标题名2"].ToString();
infos.Add(info);
}
//执行入库操作
int value = _client.ImportData(infos); var jsonStr = JsonConvert.SerializeObject(infos, new DataTableConverter(),
new JavaScriptDateTimeConverter());
jsonStr = jsonStr.Replace("\\\\n", "\\r"); var result = Json(jsonStr, JsonRequestBehavior.AllowGet);
return result;
}
功能子函数:
private DataTable GetCSVToData(string strCsvPath, bool hasHeader = true, bool needLineNo = false)
{
CSVReader csvReader = null;
try
{
csvReader = new CSVReader(strCsvPath, FileEncoding.GetType(strCsvPath));
DataTable dt = csvReader.GetTable(, -, hasHeader);
return dt;
}
catch (Exception ex)
{
LogService.Debug("解析csv文件错误:" + ex);
return null;
}
finally
{
if (csvReader != null)
{
csvReader.Dispose();
}
}
}
导入文件,获取文件位置
.NET 上传并解析CSV文件存库的更多相关文章
- poi excel文件上传并解析xls文件
1.jsp页面 <form action="hw/pe_xls_upload" method="post" enctype="multipart ...
- SpringMVc上传excel或csv文件
1.JSP页面代码 <form enctype=""multipart/form-data" method="post"> <inp ...
- php文件上传代码解析
php文件上传代码解析 is_uploaded_file() //函数判断指定的文件是否是通过 HTTP POST 上传的,返回一个布尔值. $_FILES['upfile']['tmp_name' ...
- Web攻防系列教程之文件上传攻防解析(转载)
Web攻防系列教程之文件上传攻防解析: 文件上传是WEB应用很常见的一种功能,本身是一项正常的业务需求,不存在什么问题.但如果在上传时没有对文件进行正确处理,则很可能会发生安全问题.本文将对文件上传的 ...
- java 文件上传与解析(excel,txt)
excel上传与解析 https://blog.csdn.net/zsysu_it/article/details/79074067 txt解析 https://blog.csdn.net/CSDNw ...
- php解析.csv文件
public function actionImport() { //post请求过来的 $fileName = $_FILES['file']['name']; $fileTmpName = $_F ...
- salesforce lightning零基础学习(十七) 实现上传 Excel解析其内容
本篇参考: https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader https://github.com/SheetJS/sheetjs ...
- .Net neatupload上传控件实现文件上传的进度条
1. 引入bin文件 (可以到neatupload官网下载,也可以到教育厅申报系统中找) 2. 将控件加入到工具栏,在工具栏中点鼠标右键,如图: 3. 加入neatuplaod这个文件夹(可以到nea ...
- php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
网上有很多php文件上传的类,文件上传处理是php的一个特色(至少手册上是将此作为php特点来展示的,个人认为php在数组方面的优异功能更有特 色),学php的人都知道文件上传怎么做,但很多人在编程中 ...
随机推荐
- [内核编程] 键盘过滤第一个例子ctrl2cap(4.1~4.4)汇总,测试
键盘过滤第一个例子ctrl2cap(4.1~4.4)汇总,测试 完整源代码 /// /// @file ctrl2cap.c /// @author wowocock /// @date 2009-1 ...
- 摘录-MYSQL5.7版本sql_mode=only_full_group_by问题
下载安装的是最新版的mysql5.7.x版本,默认是开启了 only_full_group_by 模式的,但开启这个模式后,原先的 group by 语句就报错,然后又把它移除了. 一旦开启 only ...
- Android中的动画详解系列【2】——飞舞的蝴蝶
这一篇来使用逐帧动画和补间动画来实现一个小例子,首先我们来看看Android中的补间动画. Android中使用Animation代表抽象的动画类,该类包括下面几个子类: AlphaAnimation ...
- [Javascript] Javascript 'in' opreator
If you want to check whether a key is inside an Object or Array, you can use 'in': Object: const obj ...
- 用DOM4J包实现对xml文件按属性分离。
转自本人博客:http://www.xgezhang.com/dom4j_xml_separata.html dom4j是一个Java的XML API.类似于jdom.用来读写XML文件的. dom4 ...
- Erlang 进制转换
http://www.cnblogs.com/me-sa/archive/2012/03/20/erlang0047.html bnot unary bitwise not integer div i ...
- Android 让文本输入框默认不获取焦点
项目中有个检索功能,页面上有个EditText输入框,打开页面后,焦点默认在EditText上,这样的话软键盘默认就会显示出来,占据大半个屏幕. 后来想办法将这个给去掉了,原先考虑着将焦点赋给页面上的 ...
- java 原子量Atomic举例(AtomicReference)
java并发库提供了很多原子类来支持并发访问的数据安全性,除了常用的 AtomicInteger.AtomicBoolean.AtomicLong 外还有 AtomicReference 用以支持对象 ...
- 【t058】拜年
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 拜年是中国人少不了的风俗.还没过年呢,刚上小学的妮妮已经等不及要给她的小伙伴去拜年了,但是她不知道如何 ...
- nopCommerce 3.9 接口笔记
接口笔记 Nop.Services.Configuration ISettingService : 配置接口(查看) Nop.Services.Localization ILocalizationSe ...