JS组件系列——自己封装一个上传文件组件
页面调用:
$('#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组件系列——自己封装一个上传文件组件的更多相关文章
- element-ui上传组件,通过自定义请求上传文件
记录使用element-ui上传组件,通过自定义请求上传文件需要注意的地方. <el-upload ref="uploadMutiple" :auto-upload=&quo ...
- layui上传文件组件(前后端代码实现)
我个人博客系统上传特色图片功能就是用layui上传文件组件做的.另外采用某个生态框架,尽量都统一用该生态框架对应的解决方案,因为这样一来,有这么几个好处?1.统一而不杂糅,有利于制定相应的编码规范,方 ...
- 工具系列 | 使用FormData方式上传文件
服务端代码 /** * 文件上传 */ public function uploadFile() { Log::error('文件上传 : '.json_encode($_FILES)); $dir ...
- 以一个上传文件的例子来说 DistributedFileSystem
public class UploadAndDown { public static void main(String[] args) { UploadAndDown uploadAndDown = ...
- Element ui 上传文件组件(单文件上传) 点击提交 没反应
element ui 第一次上传文件后 上传其他文件再次点击不再次提交 需要使用 clearFiles 清空已上传文件列表 这时候在次点击 上传按钮 就会惊喜的发现 可以上传了使用方法 this.$r ...
- 通过ES6 封装了一个上传文件的方法 XMLHttpRequest() 通用
### 上传进度回显,上传速度回显 ### 源码如下,新建index.js装起来 export class UploadServers { constructor (options) { this.x ...
- Hadoop HDFS编程 API入门系列之从本地上传文件到HDFS(一)
不多说,直接上代码. 代码 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs5; import java.io.IOException; import ja ...
- 用js如何获取一个上传文件的扩展名
function suffix(file_name){ var result =/\.[^\.]+/.exec(file_name); return result; }
- node.js+react全栈实践-Form中按照指定路径上传文件并
书接上回,讲到“使用同一个新增弹框”中有未解决的问题,比如复杂的字段,文件,图片上传,这一篇就解决文件上传的问题.这里的场景是在新增弹出框中要上传一个图片,并且这个上传组件放在一个Form中,和其他文 ...
随机推荐
- python3,判断,循环练习1
1.使用while循环输出1 2 3 4 5 6 8 9 10 i = 1 while i <= 10: if i == 7: i += 1 print(end=' ') continue pr ...
- linux内核分析笔记----中断和中断处理程序【转】
转自:http://www.cnblogs.com/hanyan225/archive/2011/07/17/2108609.html 中断还是中断,我讲了很多次的中断了,今天还是要讲中断,为啥呢?因 ...
- url 拼接的一个模块furl
from furl import furl getlongtexturl="https://weibo.com/p/aj/mblog/getlongtext" params={ & ...
- MySQL 多列索引优化小记
MySQL 5.6.30 问题背景 由于爬虫抓取的数据不断增多,这两天在不断对数据库以及查询语句进行优化,其中一个表结构如下: CREATE TABLE `newspaper_article` ( ` ...
- 定义表单控件的id和name注意点
最近在学习JavaScript,在编写一个demo时出现一个错误.为表单中的提交按钮控件定义的id属性值为submit,致使程序出错.如下代码:(js代码省略) <form method=&qu ...
- hdu 1281(最小点覆盖数)
棋盘游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- jquerycheckbox事件
https://stackoverflow.com/questions/7031226/jquery-checkbox-change-and-click-event $(document).ready ...
- configure.ac中AC_CHECK_LIB的问题
编译Linux程序时,使用configure.ac生成的configure程序,时常会出现AC_CHECK_LIB检查某个库失败 而相应库通常是存在的,只是依赖于其他的库,此时,需要乃至AC_CHEC ...
- HDU 6273.Master of GCD-差分数组 (2017中国大学生程序设计竞赛-杭州站-重现赛(感谢浙江理工))
Super-palindrome 题面地址:http://acm.hdu.edu.cn/downloads/CCPC2018-Hangzhou-ProblemSet.pdf 这道题是差分数组的题目,线 ...
- CF 999B. Reversing Encryption【模拟/string reverse】
[链接]:CF [代码]: #include<bits/stdc++.h> #define PI acos(-1.0) #define pb push_back #define F fir ...