页面调用:

$('#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. LeetCode 4 :Majority Element

    problem:Given an array of size n, find the majority element. The majority element is the element tha ...

  2. K-D树问题 HDU 4347

    K-D树可以看看这个博客写的真心不错!这里存个版 http://blog.csdn.net/zhjchengfeng5/article/details/7855241 HDU 4349 #includ ...

  3. 使用libssh2库实现支持密码参数的ssh2客户端

    使用libssh2库实现支持密码参数的ssh2客户端 http://blog.chinaunix.net/uid-24382173-id-229823.html libssh2的简单应用 http:/ ...

  4. 在css中设置图片的背景图,怎么设置图片纵向拉伸

    css中设置背景图拉伸填充,在css2.1之前这个背景的长宽值是不能被修改的. 实际的结果是只能重复显示,可以使用repeat,repeat-x,repeat-y,no-repeat这些属性来控制背景 ...

  5. Getting or Setting Pixels

    Getting or Setting Pixels The safe (slow) way Suppose you are working on an Image<Bgr, Byte>. ...

  6. 区块链开发(七)truffle使用入门汇总

    截止上篇博客,以太坊区块链开发的环境和框架基本上搭建完毕.这一篇博客重点梳理一下基本的流程和操作演示. 前奏 基于前面的安装配置,现在重新梳理一遍,以前博客讲到的就在这里一笔带过. (1)创建一个工作 ...

  7. 前段基础HTML

    HTML介绍 Web服务本质 import socket sk = socket.socket() sk.bind(("127.0.0.1", 8080)) sk.listen(5 ...

  8. BMP文件组成

    BMP文件组成 BMP文件由文件头.位图信息头.颜色信息和图形数据四部分组成. 如图: 位图文件头BITMAPFILEHEADER 位图信息头BITMAPINFOHEADER 调色板Palette 实 ...

  9. Qt笔记——QFile,QDataStream,QTextStream

    QFile #ifndef WIDGET_H #define WIDGET_H #include <QWidget> namespace Ui { class Widget; } clas ...

  10. Appscan计划扫描与扩展程序

    计划扫描:工具-->扫描调度程序 或者参考:http://pic.dhe.ibm.com/infocenter/apsshelp/v8r6m0/topic/com.ibm.help.common ...