前台Js文件代码
关于FormData
设置全局变量
var formData=new FormData;
在这里要说明的是FormData在 IE浏览器所使用的扩展方法少之又少,如果开发不需要兼容IE的话可以放心使用,火狐没试过。
>//给formData添加元素(IE 谷歌可用)
formData.append("key",value)
//获取到formData的key对应的value(谷歌可用 IE不可用)
formData.get("key")
//获取到formData的key对应的所有value(谷歌可用 IE不可用) 返回的是一个集合
formData.getAll("key")
如何在IE浏览器中删除formData里面的值
答案是:不可以的
我们可以换种思路来看
1 将所有的对象添加至Array
2 删除Array里面指定的对象
3 在点击上传之后循环Array,依次FormData.append()
var array= new Array();
//将一个对象添加至Array
array.push();
//删除Array里面指定的对象
//抓取名称
$(document).delegate(".isdelete", "click", function () {
var initDel = $(this).attr('data-name');
)}
//用一层if判断名称相同然后移除掉
for(int i =0;i<Array.length;i++)
{
if(Array[i].filename==initDel)
{
FormData.splice($.inArray(initDel, FormData[i]), 1)
}
}
ajax提交数据
//数据的提交三个属性不能忽略
enctype: “multipart/form-data”,
processData: false,
contentType: false,
//遍历添加至formData
$.ajax({
type: 'POST',
url: url,
data: formData,
dataType: 'json',
//下面三个属性是不能缺失的
enctype: "multipart/form-data",
processData: false,
contentType: false,
beforeSend: function () {
$("#btn_onsubmit").attr('disabled', 'disabled');
$("#btn_onsubmit").text('提交中...');
},
success: function (rsp) {
},
error: function (msg) {
})
控制台接受数据
public ActionResult Index(FormCollection form)
{
//获取到文件对象的集合
HttpFileCollectionBase hpf = Request.Files;
int length = hpf.Count;
for(int =0;int <length;i++)
{
string fileName = hpf[i].FileName;
//获取到文件名 IE中获取到的是C:\Users\Desktop\TEST.类似的完整文件名需要验证
//谷歌浏览器是类似于Test的文件名
string oldFileName = System.IO.Path.GetFileName(fileName);
//然后就是将文件上传至ftp或者服务器
var ftpup = new FtpFileUploader(hpf[i], ftp_user, ftp_pwd);
ftpup.UploadCheck();
ftpup.FileName = newfilename;
ftpup.Upload(uri);
}
}
小知识点
再补充一个小知识点
给文本框输入数字时选中单选按钮
<input type="radio" name="Cutting_condition" class="cutting_speed" id="opt1" />
<input type="number" placeholder="请输入..." class="Conditions" onfocus="opt1.checked =true" onblur="opt1.value=this.value" oninput="value=value.replace(/[^\d]/g,'')"/>