页面调用:

$('#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. dj定时任务

    参考:http://www.mknight.cn/post/13/ https://blog.csdn.net/sicofield/article/details/50937338 一.INSTALL ...

  2. [Leetcode Week2]Sort List

    Sort List题解 题目来源:https://leetcode.com/problems/sort-list/description/ Description Sort a linked list ...

  3. v4l2 Camera详细设置【转】

    转自:http://blog.csdn.net/smilefyx/article/details/39555289 转载自:http://blog.sina.com.cn/s/blog_602f877 ...

  4. libssh2

    http://www.cnblogs.com/lzrabbit/p/4298794.html shell脚本实现ssh自动登录远程服务器示例: #!/usr/bin/expect spawn ssh ...

  5. MYSQL使用外键进行优化

    #转载请联系 假如你是京东的数据库管理员,你现在管理着这样一个数据库. mysql> select * from goods; +----+--------------------------- ...

  6. AC日记——平衡树练习 codevs 4244

    4244 平衡树练习 思路: 有节操的人不用set也不用map: 代码: #include <cstdio> #include <cstring> #include <i ...

  7. ZCMU训练赛-H(模拟)

    H - Hard to Play   MightyHorse is playing a music game called osu!. After playing for several months ...

  8. 模板—算法—整体二分(区间k小值)

    模板—算法—整体二分(区间k小值) Code: #include <cstdio> #include <algorithm> using namespace std; #def ...

  9. Codeforces Round #394 (Div. 2) E. Dasha and Puzzle(分形)

    E. Dasha and Puzzle time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  10. Nginx+tomcat集群redis共享session应用方案

    部署环境 主机 软件版本 192.168.88.1 nginx-1.12.2+redis-3.2.11 192.168.88.2 apache-tomcat-7.0.79 + jdk1.8 192.1 ...