*JS上传Excel文件
1.控件呈现
<div class="layui-input-inline">
<input type="text" name="bb_1" id="bb_1" readonly="true" style="height: 30px; width: 450px;">
</div>
<div class="layui-input-inline">
<input type="file" id="file_b" style="height: 30px; width: 300px;" onchange="file_b_change();">
</div>
<div class="layui-inline">
<button class="layui-btn layui-btn-sm" id="btnUpload_Excel" style="width: 150px">数据上传 </button>
</div>
2.JS代码
<script type="text/javascript">
var uid = "";
layui.use(['layer', 'form', 'table'], function () {
var layer = layui.layer,
form = layui.form;
$ = layui.jquery;
var table = layui.table;
$("#btnUpload_Excel").on("click", function () {
BtnUpload_Excel(table);
});
});
//文件路径文本框赋值
function file_b_change() {
$("#bb_1").val($("#file_b").val());
}
function BtnUpload_Excel(table) {
var path = $('#bb_1').val();
if ($.trim(path) == "") { layer.msg("请选择要上传的文件"); return; }
var _file = $('#file_b');
var files = document.getElementById("file_b").files;
var form_data = new FormData();
// 获取文件
var file_data = $("#file_b").prop("files")[0];
form_data.append("uid", uid);//操作人(全局)
form_data.append("excel", file_data);
$.ajax({
url: '/XXXXXX/UploadExcelFile',//API接口
type: 'post',
dataType: 'json',
contentType: false,
processData: false,
data: form_data,
success: function (data) {
var rel = data.tc;
if (rel == 'OK') {
//清理控件
$('#bb_1').val('');
var test = document.getElementById('file_b');
test.value = '';
layer.msg('上传成功!');
} else {
//清理控件
$('#bb_1').val('');
var test = document.getElementById('file_b');
test.value = '';
layer.msg(rel);
}
},
error: function (err) {
//清理控件
$('#bb_1').val('');
var test = document.getElementById('file_b');
test.value = '';
layer.alert(err);
}
});
}
</script>
3.后台接收
[HttpPost]
public ActionResult UploadExcelFile()
{
var rel = new { tc = "" };//根据需要赋值
var uid = Request.Form["uid"];
//获取文件
var fileNames = Request.Files["excel"];
if (string.IsNullOrEmpty(fileNames.ContentLength.ToString()))
{
rel = new { tc = "请选择上传文件" };
return Content(JsonConvert.SerializeObject(rel));
}
Thread.Sleep(200);
decimal size = Math.Round(decimal.Parse(fileNames.ContentLength.ToString()) / 1024 / 1024, 2, MidpointRounding.AwayFromZero);//换算文件大小(单位:M)
if (size > 6)
{
rel = new { tc = "文件过大,请上传小于6M文件!" };
return Content(JsonConvert.SerializeObject(rel));
}
var fileName = Path.GetFileName(fileNames.FileName);
string path = fileName;
string file_name = fileName.Substring(0, fileName.LastIndexOf("."));
string file_format = fileName.Substring(fileName.LastIndexOf("."));
if (file_format != ".xls" && file_format != ".xlsx")
{
rel = new { tc = "请上传Excel格式文件!" };
return Content(JsonConvert.SerializeObject(rel));
}
DateTime nowTime = DateTime.Now;
//原文件名 + “_” + 时间戳 + 用户ID + 文件格式(根据需要自定义)
string NewFileName = file_name + "-" + nowTime.ToString("yyMMddHHmmss") + "-" + uid + file_format;
path = Path.Combine(Server.MapPath("/服务器站点根目录下文件夹名称/"), NewFileName);
try
{
fileNames.SaveAs(path);
}
catch (Exception ex)
{
rel = new { tc = "上传异常:" + ex.Message };
return Content(JsonConvert.SerializeObject(rel));
}
//1.SaveAs不抛异常可以一定程度上认为成功;
//2.或检查文件是否存在 File.Exists(path)。
rel = new
{
tc = "OK";
};
return Content(JsonConvert.SerializeObject(rel));
}