控制器代码:
//将上传的图片文件放到项目指定位置并将图片信息保存到user对象
//1.检查文件存储目录是否存在
if (!Directory.Exists(Server.MapPath("~/Document/UserPicture/")))
{
//不存在存储目录,则需要创建目录
Directory.CreateDirectory(Server.MapPath("~/Document/UserPicture/"));
}
//2.处理文件图片,判断是否接收到文件图片
if (upImage != null &&upImage.ContentLength > 0)
{
//2.1.获取文件扩展名
string strExt = Path.GetExtension(upImage.FileName);
/*2.2.设置存储到指定目录是的文件名,当前时刻时间字符串+GUID+文件扩展名*/
string fileName = DateTime.Now.ToString("yyyyMMddHHmmssffff") + System.Guid.NewGuid().ToString()+ strExt;
//2.3.拼接路径
string filePath =Server.MapPath("~/Document/UserPicture/") + fileName;
//2.4.将图片文件放到指定路径下
upImage.SaveAs(filePath);
//2.5.保存文件名到对象
User.userPicture = fileName;
//3.保存图片到文件对象
//3.1.创建二进制数组,大小为图片文件大小
byte[] imgBytes = newbyte[upImage.ContentLength];
//3.2.读取图片文件到二进制数组中,读取流到二进制数组,byte数组,开始位置,结束位置
upImage.InputStream.Read(imgBytes, 0,upImage.ContentLength);
//3.3.保存到对象
User.userPic =imgBytes;
}
if (!string.IsNullOrEmpty(User.idCard)&&
IdCardHelper.CheckIdCard(User.idCard)&&
!string.IsNullOrEmpty(User.telephone)&&
Regex.IsMatch(User.telephone,"^0?(13[0-9]|14[5-9]|15[012356789]|166|17[0-8]|18[0-9]|19[89])[0-9]{8}$") &&
!string.IsNullOrEmpty(User.email)&&
Regex.IsMatch(User.email,"^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"))
{
User.idCard =User.idCard.Trim();
User.telephone= User.telephone.Trim();
User.email =User.email.Trim();
User.effective = true;
}
else
{
User.effective= false;
}
//去空格
User.account =User.account.Trim();
//去重复
int OldCount =Mymodel.S_User.Count(o => o.account == User.account ||
(o.idCard!= "" && o.idCard!= null &&
o.idCard == User.idCard) ||
(o.telephone != "" && o.telephone != null &&
o.telephone == User.telephone) ||
(o.email != "" && o.email!= null &&
o.email== User.email));
if (OldCount == 0)
{
User.foundTime= DateTime.Now;
//新增
Mymodel.S_User.Add(User);
if(Mymodel.SaveChanges() > 0)
{
RtJson.State = true;
RtJson.Text= "新增成功!";
}
else
{
RtJson.Text= "新增失败!";
}
}
else
{
RtJson.Text = "新增用户信息已存在,请检查!";
}
页面样式代码:
Js代码:
//保存新增&保存修改
function SaveUser() {
//获取页面填写数据
var arrUserData = $("#formUser").serializeArray();
var JsonObj = {};//声明一个变量,对象类型的变量
var FmData = new FormData();//创建对象,FormData
//fmData.append(名称,值);
//将序列化出来的对象数组转化为JSON对象 for in遍历对象属性
for (var index in arrUserData) {
//JsonObj[键]= 值;
JsonObj[arrUserData[index].name] = arrUserData[index].value;
//将页面数据传入FormData对象里
FmData.append(arrUserData[index].name, arrUserData[index].value);
}
//打印对象数组 And 打印转换之后的对象
//console.log(arrUserData);
//console.log(JsonObj);
//数据验证
if(IsNullorNot(JsonObj.UserName)) {
layer.alert("请填写用户姓名!");
return;
}
if(IsNullorNot(JsonObj.Account)) {
layer.alert("请填写借书证号!");
return;
}
if(IsNullorNot(JsonObj.PassWord)) {
layer.alert("请填写密码!");
return;
}
if(IsNullorNot(JsonObj.RoleID)) {
layer.alert("请选择用户角色!");
return;
}
//将图片放到FormData对象中
FmData.append("upImage", $("#upImage").get(0).files[0]);
var strUrl = "SaveInsertUser";
if (JsonObj.UserID != "" &&JsonObj.UserID != undefined && JsonObj.UserID > 0) {
strUrl = "saceUpdataUser";//修改
}
var index =layer.load();//打开加载层
/*报错:UncaughtTypeError:Illegal invorcation
原因:jQuery Ajax上传文件处理方式,使用ajax向后台发送数据时其中的图片数据的参数类型为file,
属于对象,而不是一个字符串值,导致错误的出现*/
//发送请求
$.ajax({
url: strUrl,//请求路径
type: "POST",//请求方式
data: FmData,//传参
contentType: false,//让Ajax不指定数据类型
processData: false,//让Ajax不对数据进行处理
dataType: "json",//预设置控制器返回的数据类型(格式)
success: function (RtMsg) {
layer.close(index);
layer.alert(RtMsg.Text, function (layerIndex) {
layer.close(layerIndex);
if (RtMsg.State) {
//关闭模态框
$("#UserModal").modal("hide");
//刷新页面
//searchStudent();//会导致图片文件上传错乱
window.location.reload();
}
})
}
});
}
效果图: