我的后端代码是asp.net 前端使用easy UI ,前端控件有所封装不影响我们的示例:
//上传代码:
if (context.Request.Files.Count <= 0) return;
//文件路径指定
string filePath = context.Request["FFilePath"].ToString();
//文件操作(区分是否读取文件数据)
string fileOption = context.Request["FileOption"];
string targetPath = "";
if (context.Request["FTargetPath"] != null)
{
targetPath = context.Request["FTargetPath"].ToString();
}
string basePath = context.Request.PhysicalApplicationPath + "Attachment\\" + targetPath;
basePath = basePath.Replace('/', '\\');
if (!System.IO.Directory.Exists(basePath))
{
System.IO.Directory.CreateDirectory(basePath);
}
string upLoadPath = basePath + filePath;
//替换路径
upLoadPath = upLoadPath.Replace('/', '\\');
//保存文件
HttpPostedFile postedFile = context.Request.Files[0];
postedFile.SaveAs(upLoadPath);
if (fileOption != null)
{
ExcelHelperByNPOI poi = new ExcelHelperByNPOI();
DataTable dtResult = poi.ExcelToDataTable(upLoadPath, "sheet1", true); //这里是读取到的数据源
//删除文件
File.Delete(upLoadPath);
this._ResultModel.IsSuccess = true;
this._ResultModel.Message = "成功!";
}
JS 代码如下:
$.messager.progress({
title: '请稍等', msg: '', text: MessageOperation.GetMessage('ProgressText')
});
var fullPath = Math.random().toString(36).substr(2) + ".xls";
var form = $("#formFile")[0];
form.action =对应路径+ "?Option=ImportData&FileOption='readFileCarrier'&FFilePath=" + encodeURIComponent(fullPath) + "&FTargetPath=HR/Documents/";
form.method = "post";
form.target = "iframeFileUpLoad";
form.enctype = "multipart/form-data";
var formData = new FormData($('#formFile')[0]);
$.ajax({
async: true,
url: form.action,
type: 'POST',
cache: false,
data: formData,
processData: false,
contentType: false,
success: function (jsonData) {
$.messager.progress("close");
var result = JSON.parse(jsonData);
if (result.IsSuccess != true) {
$.messager.alert('提示', result.Message, 'error');
return false;
} else {
$.messager.alert('提示', result.Message, 'info', function () {
parent.$("#divEditDialog").dialog("close");
});
}
}
});