页面调用:

$('#fileUpload').cemsUpload({
errorEmpty:'<s:text name="cupgrade.view.tip.upload.file.error.empty"></s:text>',
errorLarge:'<s:text name="cupgrade.view.tip.upload.file.error.large"></s:text>',
errorType:'<s:text name="cupgrade.view.tip.upload.file.error.type"></s:text>',
progressFileUploading:'<s:text name="cems.soft.progress.fileUploading"></s:text>',
url:'${basePath}/patch/patchAction_fileUpload.do?to=checkFile',
img:'${basePath}/scripts/jQuery/plugins/uploadify/hard-drive-upload.png',
success:function(data){
$("input[type='file']").removeAttr("disabled");
$(".fileUploadDiv").removeClass("disOpacity");
if (data == 'success') {
$("#fileUpload-queue").html("<div class='checkInfo'><img src='${basePath}/images/cupgrade/upload_ok.png'/><s:text name='cupgrade.view.tip.upload.ok'/></div>");
}else {
$("#fileUpload-queue").html("<div class='checkInfo'><img src='${basePath}/images/cupgrade/upload_fail.png'/>上传失败</div>");
}
setTimeout(function(){
location.reload();
},)
}
});

  组件封装:

(function ($) {
$.fn.cemsUpload = function (method) {
if (methods[method]) {
return methods[method].apply(this, Array.prototype.slice.call(arguments, ));
} else if (typeof method === 'object' || !method) {
return methods.init.apply(this, arguments);
} else {
$.error('Method ' + method + ' does not exist on jQuery.cemsUpload');
}
};
var $settings_cemsUpload;
var methods = {
init: function (options) {
$this_cemsUpload = this;
//创建一些默认值,拓展任何被提供的选项
$settings_cemsUpload = $.extend({
'url': '',
'filesSize': ,
'hz':'.zip',
'empty':false,
'img':'${basePath}/scripts/jQuery/plugins/uploadify/hard-drive-upload.png'
}, options);
return this.each(function () {
$(this).attr('style','position: relative;top: 90px;height:78px;width:300px;background:#e7fbd7').attr('class','fileUploadDiv');
$(this).append('<input id="fileUpload" name="fileUpload" type="file" multiple="multiple" class="font" style="display:none;">');
$(this).append('<a id="btn" href="javascript:void(0);" class="btn" style="width:300px"><img alt="" src="'+$settings_cemsUpload['img']+'"/></a>');
$(this).append('<div id="fileUpload-queue"></div>');
$(this).find('#btn').click(methods['openFileChoice']);//给btn绑定click事件
}); },
openFileChoice:function(){
$(this).prev().bind('change',methods['doFileUpload']);//给input绑定change事件:上传操作
$(this).prev().click();
},
doFileUpload:function(){
var formData = new FormData();//FormData方法上传二进制文件
var files = $(this)[].files;
//非空验证
if(!$settings_cemsUpload['empty']){
if(files.length == ){
showMsg("",$settings_cemsUpload['errorEmpty'],false,function(){});
$(this).removeAttr("disabled");
$(this).parent().removeClass("disOpacity");
return;
}
}
var filesSize = ;
var hzs = '';
for(var i=;i<files.length;i++){
filesSize+=files[i].size/(*);
hzs+=files[i].name.substr(files[i].name.lastIndexOf('.'))+',';
formData.append("file"+i,files[i]);
}
if($settings_cemsUpload['filesSize']!=''){
//文件大小
if(filesSize > $settings_cemsUpload['filesSize']){
showMsg("",$settings_cemsUpload['errorLarge'],false,function(){});
$(this).removeAttr("disabled");
$(this).parent().removeClass("disOpacity");
return;
}
}
//文件后缀
if($settings_cemsUpload['hz']!=''){
for(var i=;i<hzs.split(",").length;i++){
if($settings_cemsUpload['hz'].indexOf(hzs.split(",")[i])==-){
showMsg("",$settings_cemsUpload['errorType'],false,function(){});
$(this).removeAttr("disabled");
$(this).parent().removeClass("disOpacity");
return;
}
}
}
Loading(true,$settings_cemsUpload['progressFileUploading']);
var flag=$("input[name='patchFlag']:checked").val();
$.ajax({
type:'post',
url:$settings_cemsUpload['url']+"&patchFlag="+flag,
data:formData,
contentType:false,//不设置Content-Type请求头
processData:false,//不处理发送的数据
success:function(data){
Loading(false);
$settings_cemsUpload['success'](data);
}
});
}
};
})(jQuery);

JS组件系列——自己封装一个上传文件组件的更多相关文章

  1. element-ui上传组件,通过自定义请求上传文件

    记录使用element-ui上传组件,通过自定义请求上传文件需要注意的地方. <el-upload ref="uploadMutiple" :auto-upload=&quo ...

  2. layui上传文件组件(前后端代码实现)

    我个人博客系统上传特色图片功能就是用layui上传文件组件做的.另外采用某个生态框架,尽量都统一用该生态框架对应的解决方案,因为这样一来,有这么几个好处?1.统一而不杂糅,有利于制定相应的编码规范,方 ...

  3. 工具系列 | 使用FormData方式上传文件

    服务端代码 /** * 文件上传 */ public function uploadFile() { Log::error('文件上传 : '.json_encode($_FILES)); $dir ...

  4. 以一个上传文件的例子来说 DistributedFileSystem

    public class UploadAndDown { public static void main(String[] args) { UploadAndDown uploadAndDown = ...

  5. Element ui 上传文件组件(单文件上传) 点击提交 没反应

    element ui 第一次上传文件后 上传其他文件再次点击不再次提交 需要使用 clearFiles 清空已上传文件列表 这时候在次点击 上传按钮 就会惊喜的发现 可以上传了使用方法 this.$r ...

  6. 通过ES6 封装了一个上传文件的方法 XMLHttpRequest() 通用

    ### 上传进度回显,上传速度回显 ### 源码如下,新建index.js装起来 export class UploadServers { constructor (options) { this.x ...

  7. Hadoop HDFS编程 API入门系列之从本地上传文件到HDFS(一)

    不多说,直接上代码. 代码 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs5; import java.io.IOException; import ja ...

  8. 用js如何获取一个上传文件的扩展名

    function suffix(file_name){     var result =/\.[^\.]+/.exec(file_name);     return result; }

  9. node.js+react全栈实践-Form中按照指定路径上传文件并

    书接上回,讲到“使用同一个新增弹框”中有未解决的问题,比如复杂的字段,文件,图片上传,这一篇就解决文件上传的问题.这里的场景是在新增弹出框中要上传一个图片,并且这个上传组件放在一个Form中,和其他文 ...

随机推荐

  1. Selenium菜鸟手册

    转自: http://www.iselenium.com/read.php?tid=458 首先声明我还是一只很菜的菜鸟,学习Selenium一个来月而已,发这个帖子是想利用我这块板砖引出真正的玉来, ...

  2. linux下面某些常用命令的用法【转】

    转自:http://blog.csdn.net/luo3532869/article/details/7584290 ls 命令用于常看目录,用法:ls [选项][目录或文件]例:使用ls命令显示/h ...

  3. Linux环境下通过ODBC访问MSSql Server

    为了解决Linux系统连接MSSql Server的问题,微软为Linux系统提供了连接MSSql Server的ODBC官方驱动.通过官方驱动,Linux程序可以方便地对MSSql Server进行 ...

  4. Javacore分析(转载)

    本文转自(http://www.ibm.com/developerworks/cn/websphere/library/techarticles/1406_tuzy_javacore/1406_tuz ...

  5. [ Linux 命令 ] awk

    一.AWK简介 awk:报告生成器,是以行为单位进行处理,并格式化后显示 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说a ...

  6. Activiti 6.0 入门篇

    从Activiti网站下载Activiti UI WAR文件(或百度云) 将下载的activiti-app.war复制到Tomcat的webapps目录. 启动Tomcat 打开浏览器并转到 http ...

  7. MATLAB规划问题——线性规划和非线性规划

    1.线性规划 求线性规划问题的最优解有两种方法,一种方法是使用linprog命令,另一种是使用optimtool工具箱,下面分别介绍这两种方法. ①linprog命令 一般情况下,Linprog命令的 ...

  8. Docker背后的内核知识:命名空间资源隔离---亲测

    参考URL: https://linux.cn/article-5057-1.html 实现代码(网络和用户空间只是看懂了) 实际上,Linux内核实现namespace的主要目的就是为了实现轻量级虚 ...

  9. Canvas基础——钟表绘制

    首先,canvas语法基础薄弱的小伙伴请点这里,剩下的小伙伴们可以接着往下看了. 一个表,需要画什么出来呢:3条线(时分秒针),1个圆(表盘),以及60条短线/点(刻度). 嗯,没毛病. 那接下来让我 ...

  10. Jquery EasyUI选项卡-Tabs的使用方法

    以下是easyUI的tabs的简单实用介绍. var e =$('#main').tabs('exists','accordion'); if(e==true){  $('#main').tabs(' ...