Ext.Net一般处理程序上传文件
2024-10-20 16:25:17
引言
最近公司项目全部转向前端化,故所有aspx页面业务逻辑尽可能的转到用户控件前台页面完成。以方便每次发布项目时只是替换前端页面不会影响客户体验。
既然转到前台逻辑,那么必须走后台的业务也就单独封装了一个公共一般处理程序,用CMD命令方式生成DLL。项目引用该DLL,每次有更新后台方法生成新的DLL替换原有的,避免影响线上客户。
有了这些需求铺垫,现在故针对Excel导入或者导出做了后台处理方案。
前台js获取ext:FileUploadField控件选中值上传提交至服务器一般处理程序:
var file = App.FileUploadID.getEl().down('input[type=file]').dom.files[0];
if (file == undefined) {
Alert("请选择Excel文件!");
} else {
var reader = new FileReader();
reader.onload = (function (theFile) {
return function (e) {
$.ajax({
type: "post",
url: "/CommonMethodHandler.ashx",
data: "Type=1&reader=" + encodeURIComponent(e.target.result),
success: function (result) {
Alert(result);
}
});
};
})(file);
reader.readAsDataURL(file);
}
js相关涉及到的知识点不做过多解释,如有疑问,自行百度了解。
后台C#代码:
public void TestRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string Type = context.Request.Params["Type"];
string result = "";
switch (Type)
{
case "1":
result = TestExcelImport(context);
context.Response.Write(result);
break;
}
} public string TestExcelImport(HttpContext context)
{
try
{
string str = context.Request["reader"];
var reader = str.Split(',')[1];
byte[] bytes = Convert.FromBase64String(reader);
if (bytes == null)
{
return "请选择Excel文件";
}
else
{
DataTable dataTable = new DataTable();
using (MemoryStream memoryStream = new MemoryStream(bytes))
{
dataTable = ExcelDll.TranslateToTable(memoryStream, 0);//封装DLL,请自行百度内存流转dataTable
dataTable.TableName = "TestTempData";
using (SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(xEncrypt.DecryptText('连接字符串'), SqlBulkCopyOptions.UseInternalTransaction))
{
try
{
sqlbulkcopy.DestinationTableName = "TestTempData";
sqlbulkcopy.WriteToServer(dataTable);
}
catch (System.Exception ex)
{
throw ex;
}
}
}
return "导入成功";
}
}
catch (Exception ex)
{
return ex.Message;
}
}
导入就实现了,导出请参考另外文章《使用Aspose插件对Excel操作》
最新文章
- 【原】为什么选择iPhone5的分辨率作为H5视觉稿尺寸
- poj 1266 Cover an Arc.
- Sql--列操作
- BZOJ 3832: [Poi2014]Rally
- Something wrong with FTK's index search results
- java给图片加水印代码
- PHP的PSR-0命名标准
- javascript 备忘录
- Ext Js详解指南
- (转载)java 枚举 循环遍历以及一些简单常见的使用
- Python内置函数(27)——range
- 学习TensorFlow,打印输出tensor的值
- Nginx限流配置
- pycharm的安装和使用小技巧
- 关于vivado implement后clock interaction报告的理解(更新中)
- leetcode958二叉树的完全检验-java
- 通过js去掉所有的html标签,得到HTML标签中的所有内容
- redis主从配置<;转>;
- python 中dir()和__dict__的区别
- mysqld_safe与mysqld区别详解
热门文章
- Educational Codeforces Round 56 (Rated for Div. 2) D. Beautiful Graph (二分图染色)
- EFCore学习记录--数据访问技术人门
- Leetcode(22)-括号生成
- JVM终结篇
- Linux错误记录贴
- 前端 Web 异常监控系统 All In One
- js location API All In One
- free HTTPS for website! &; SSL &; TLS &; HTTP/2 &; SPDY
- vue-parent-child-lifecycle-order
- VIM 官方教程