0x01 前端
<input id="File1" name="File1" type="file" accept="image/gif, image/jpeg,image/png,image/jpg" multiple="multiple"/>
<input type="button" name="save" id="save" value="点击保存" />
<script>
$("#save").click(function () {
var filelength = document.getElementById("File1").files.length
var file,file1 = null;
if (filelength<1) {
alert("请选择至少一张图片")
} else if (filelength > 2) {
alert("请选择至多两张图片")
} else if (filelength==1) {
file = document.getElementById("File1").files[0];
} else if (filelength == 2) {
file = document.getElementById("File1").files[0];
file1 = document.getElementById("File1").files[1];
}
var strData = new FormData();
strData.append("file", file);//第一张图片
strData.append("file1", file1);//第二张图片
$.ajax({
type: "POST",
url: "../../Handler/Business/EmissionsEntrust/EmissionsEntrustControlHandler.ashx",
data: strData,
processData: false,
contentType: false,
async: false,
success: function (returnData) {
//console.log(returnData);
if (returnData.State=="y") {
alert(returnData.Info);
} else {
alert(returnData.Info);
}
},
error: function (returnData) {
console.log(returnData);
}
});
});
</script>
0x02 后台
HttpFileCollection files = context.Request.Files;
HttpPostedFile FileSave = files[0]; //用key获取单个文件对象HttpPostedFile
string imgName = DateTime.Now.ToString("yyyyMMddhhmmss") + model.VIN;
string imgPath = "/Business/ManualJudge/Img/" + imgName + Path.GetExtension(FileSave.FileName); //通过此对象获取文件名
string AbsolutePath = context.Server.MapPath(imgPath);
FileSave.SaveAs(AbsolutePath); //将上传的东西保存
0x03 问题
如果需要上传两张图片,则需要在前台代码中增加三个变量用来接收<input id="file" type="file" multiple="multiple"/>的file,例如第一张图片var file1 = document.getElementById("file").files[0],第二张图片var file2 = document.getElementById("file").files[1]。
再使用var data = new FormData(); data.append("file1",file1); data.append("file2",file2);作为ajax的data参数值传递给后台ashx一般处理程序。
后台使用HttpFileCollection files = context.Request.Files;接收前台传递的文件(注:ajax的data中有几个input的file对象,后台才能接收几个file)