j2ee之自定义文件上传
定义静态js方法
var UploadFileModel = /** @class */ (function(){ function UploadFileModel(url,title,accept,hiddenInput,callBack){ _upload = this; _upload.url = url;//请求地址 _upload.title = title;//modal标题 _upload.accept = accept;//文件类型 _upload.hiddenInput = hiddenInput;//需要添加的隐藏域等 _upload.callBack = callBack;//回调函数 } /** * 判断是否是IE浏览器 */ UploadFileModel.prototype.isIE = function(){ if (!!window.ActiveXObject || "ActiveXObject" in window){ return true; }else{ return false; } }; UploadFileModel.prototype.isDom = ( typeof HTMLElement === 'object' ) ? function(obj){ return obj instanceof HTMLElement; } : function(obj){ return obj && typeof obj === 'object' && obj.nodeType === 1 && typeof obj.nodeName === 'string'; }; /** * 导入 */ UploadFileModel.prototype.upload = function(){ var cur = this;//这里this是触发事件的dom var file = $("#_file").val() ; if(file == '' || file == null){ $("#_errorMsg").show(); $("#_errorMsg").text("请选择文件!"); return; } $.ajax({ url: _upload.url, type: 'POST', cache: false, data: new FormData($('#_uploadForm')[0]), processData: false, contentType: false }).done(function(rspData) { if (_upload.callBack != null && typeof _upload.callBack == "function")//如果是函数 _upload.callBack.call(cur, rspData); }).fail(function(res) { swal("提示","ajax请求异常,请联系管理员!"+res,"error"); }); }; UploadFileModel.prototype.hide = function(){ $("#_uploadModal").modal("hide"); }; UploadFileModel.prototype.clear = function(){ $("#_uploadModal").remove(); }; UploadFileModel.prototype.appendUploadModal = function(){ var modalHtml = '<div class="modal fade" id="_uploadModal" tabindex="-1" role="dialog" aria-labelledby="uploadModalTitle" data-backdrop="static">'; modalHtml += ' <div class="modal-dialog" role="document">'; modalHtml += ' <div class="modal-content">'; modalHtml += ' <div class="modal-header">'; modalHtml += ' <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>'; modalHtml += ' <h4 class="modal-title" id="_uploadModalTitle">上传文件</h4>'; modalHtml += ' </div><!-- /.modal-header -->'; modalHtml += ' <div class="modal-body">'; modalHtml += ' <form id="_uploadForm" method="post" enctype="multipart/form-data">'; modalHtml += ' <div id="_diyFile" class="row">'; modalHtml += ' <div class="col-lg-10 col-md-10 col-sm-10">'; modalHtml += ' <input type="text" class="form-control" readonly="readonly" id="_fileNameView" placeholder="未选择文件">'; modalHtml += ' </div>'; modalHtml += ' <div class="col-lg-2 col-md-2 col-sm-2" style="padding-left:0px">' modalHtml += ' <button type="button" class="btn btn-primary" id="_selectFile">选择文件</button>'; modalHtml += ' </div>'; modalHtml += ' </div>'; modalHtml += ' <input type="file" style="width:400px;height:30px;display: none" id="_file" name="uploadfile" accept="" />'; modalHtml += ' <span id="_errorMsg" style="display: none;color: red;"></span>'; modalHtml += ' </form>'; modalHtml += ' </div>'; modalHtml += ' <div class="modal-footer">'; modalHtml += ' <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>'; modalHtml += ' <button type="button" class="btn btn-primary" id="_uploadSubBtn">上传</button>'; modalHtml += ' </div>'; modalHtml += ' </div><!-- /.modal-content -->'; modalHtml += ' </div>'; modalHtml += '</div>'; $("body").append(modalHtml); }; /** * 初始化 */ UploadFileModel.prototype.init = function(){ //1、在body里添加modal _upload.appendUploadModal();//在body里添加modal //2、为上传按钮绑定上传函数 $("#_uploadSubBtn").unbind().on('click',_upload.upload); //3、将隐藏域添加进form表单' if(_upload.hiddenInput != null && _upload.hiddenInput != ""){ if(_upload.isDom(_upload.hiddenInput)){ $("#_uploadForm").appendChild(_upload.hiddenInput); }else{ $("#_uploadForm").append(_upload.hiddenInput); } } //设置标题 if(_upload.title == null && _upload.title == ''){ _upload.title = "文件上传"; } $("#_uploadModalTitle").html(_upload.title); //设置文件类型 $("#_file").attr("accept",_upload.accept); //4、如果是IE,用原生的type='file' if(_upload.isIE()){ $("#_diyFile").hide(); $("#_file").show(); $("#_file").unbind().on("change",function(){ $("#_errorMsg").hide(); }); } else { $("#_selectFile,#_fileNameView").unbind().on('click',function(){ $("#_file").click(); }); $("#_file").unbind().on("change",function(){ var filePath = $(this).val(); var pos = filePath.lastIndexOf("\\"); $("#_fileNameView").val(filePath.substring(pos+1)); $("#_errorMsg").hide(); }); } //5、modal隐藏后移除 $("#_uploadModal").on("hidden.bs.modal",function(){ _upload.clear(); }); //5、初始化结束展示modal $("#_uploadModal").modal("show"); }; return UploadFileModel; }());
jsp 即你的页面中
<div class="panel-heading data-model-header-right"> <button class="btn btn-primary btn-sm" id="uploadFileBtn">上传报文回执</button> </div> <script type="text/javascript" src="${ctx}/static/js/uploadFileModel.js"></script>
你页面中对应的js
$(function(){ var uploadFileModel = new UploadFileModel(URLConstant.backManager.toUpLoadMsgFile,"上传报文回执","application/zip",null,function(data){ if(data.status == globalConstant.status.success){//成功 /** * 给个提示 * */ swal({ title: "回执报文上传成功!", text: data.msg, icon: "success", buttons: "确定", }) .then(function(value) {//回调函数 uploadFileModel.hide(); queryByPage(1);//加载第一页 }); } else { //提示框 swal("回执报文上传失败!",data.msg,"error"); } }); $("#uploadFileBtn").on("click",uploadFileModel.init); queryByPage(1); });