前言:公司前端都是index页面引用js,剩下的添加。。。都是html页。加大操作难度5555,所以就是主页面操作子页面上传。效果如下:
1,前端html页代码如下 。其中请注意,form中enctype="multipart/form-data",必须使用form-data传值。并且html5可直接在input标签file控件中设置accept属性限制上传文件类型,设置multiple属性可同时上传多个文件。如果是页面为cshtml,则可以直接设置上传按钮的data-bind="click:事件名称"进行事件的绑定,因为页面为html页,我在js中处理绑定
<form id="importFileForm" enctype="multipart/form-data">
<table class="dialog-table">
<tbody>
<tr>
<td class="col-name">上传照片:</td>
<td>
<input type="file" class="easyui-filebox" id="fileImport" name="fileImport" style="width:260px;">
<a id="uploadFile" class="easyui-linkbutton" data-options="iconCls:'icon-ok'" href="#">上传</a>
</td>
</tbody>
</table>
</form>
2,下面是js代码,其中box为子窗体对象,若为cshtml即可直接用$获取对象,其中获取file对象为var file = document.getElementById('fileImport').files[0];form数据即为new FormData($("#importFileForm")[0]);
1 function initAdd($box) { 2 $box.find("#uploadFile").bind('click', function (e) { 3 // file对象 4 var file = $box.find("#fileImport")[0].files[0]; 5 //判断控件中是否存在文件内容,如果不存在,弹出提示信息,阻止进一步操作 6 if (file == null) { alert('错误,请选择文件'); return; } 7 8 //获取文件名称 9 var fileName = file.name; 10 //获取文件类型名称 11 var file_typename = fileName.substring(fileName.lastIndexOf('.'), fileName.length); 12 13 var p = $box.find("#importFileForm"); 14 //获取form数据 15 var formData = new FormData(p[0]); 16 17 $.ajax({ 18 url: "/YGXX/YGGL/PostExcelData", 19 type: 'POST', 20 data: formData, 21 async: false, 22 cache: false, 23 contentType: false, 24 processData: false, 25 success: function (returnInfo) { 26 alert(1); 27 }, 28 error: function (returnInfo) { 29 alert(0); 30 } 31 }); 32 }); 33 }
3,Controller代码
1 [HttpPost] 2 public string PostExcelData() 3 { 4 //获取客户端上传的文件集合 5 HttpFileCollection files = System.Web.HttpContext.Current.Request.Files; 6 //获取文件集合中的第一个文件(每次只上传一个文件) 7 HttpPostedFile file = files[0]; 8 //定义文件存放的目标路径 9 string targetDir = System.Web.HttpContext.Current.Server.MapPath("~/Content/touxiang"); 10 11 //组合成文件的完整路径 12 string path = System.IO.Path.Combine(targetDir, System.IO.Path.GetFileName(file.FileName)); 13 //保存上传的文件到指定路径中 14 file.SaveAs(path); 15 return path; 16 }
结语:
菜鸟技能,请大神指点。