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();
}
}
}

导入文件,获取文件位置

最新文章

  1. Hibernate 错题分析
  2. GDB的深入研究
  3. VB类模块中属性的参数——VBA中Range对象的Value属性和Value2属性的一点区别
  4. Fragment:关于Avoid non-default constructors in fragments的错误
  5. 新版汉诺塔(UVa10795 - A Different Task)
  6. Quartus ii 12.1软件破解之后编译原有的工程出现报警错误的解决办法
  7. du 命令,对文件和目录磁盘使用的空间的查看
  8. HDU 5475 An easy problem 线段树
  9. 【POJ2778】AC自动机+矩阵乘法
  10. Oracle存储过程procedure
  11. ZUFEOJ 2395 天棋哥哥大战AlphGo
  12. Android代码资源的国际化
  13. (转)CSS颜色及&lt;a&gt;标签超链接颜色改变
  14. mysql中group by 的用法解析
  15. MPLS LDP随堂笔记1
  16. 七 Struts2 文件上传和下载
  17. ThinkPHP 数据库操作(五) : 存储过程、数据集、分布式数据库
  18. fiddler主要图标说明
  19. 【评分】BETA 版冲刺前准备
  20. 数论算法 剩余系相关 学习笔记 (基础回顾,(ex)CRT,(ex)lucas,(ex)BSGS,原根与指标入门,高次剩余,Miller_Rabin+Pollard_Rho)

热门文章

  1. 中小研发团队架构实践之RabbitMQ快速入门及应用
  2. ztree实现左边动态生成树,右边为具体信息功能
  3. Lucene学习总结之一:全文检索的基本原理 2014-06-25 14:11 666人阅读 评论(0) 收藏
  4. 新版itunes添加铃声
  5. MySQL搜索:WHERE
  6. freemarker自己定义标签报错(七)
  7. POJ2112 Optimal Milking 【最大流+二分】
  8. Android XMPP服务器, BOSH(Http-Binding)和WEB客户端搭建
  9. 非常实用全面的 C++框架,库类等资源
  10. ITFriend创业败局(一):选择创业方向和寻找合伙人,创业失败的2个关键点