欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

jQuery自定义图片上传插件实例代码

程序员文章站 2022-06-03 17:43:36
摘要 1.jquery自定义插件方法 2.表单file样式调整 3.利用formdata,ajax上传图片 4.js,css弹出层 5.springmvc上传图片...

摘要

1.jquery自定义插件方法
2.表单file样式调整
3.利用formdata,ajax上传图片
4.js,css弹出层
5.springmvc上传图片

效果

jQuery自定义图片上传插件实例代码

调用方式

$("#picurl").imgupload({}),在代码内部为调用对象绑定了click事件,点击弹出上传界面。

$(function(){
$("#picurl").imgupload({url:'<%=basepath%>'+'file/upload.do'})
$("#picurl").imgupload("resize");/**弹出层水平垂直居中**/
})

jquery自定义插件要点

1.定义作用域

2.$.fn.***为每个jquery对象扩展方法

3.设置默认值

4.return this.each,支持链式调用

/**部分代码**/
(function($){
 $.fn.imgupload=function(options,param){
  if(typeof options =="string"){
   return $.fn.imgupload.methods[options](this,param);
  }
  /**this为jquery对象**/
  options = options || {};
  return this.each(function() {
   /**this 为 dom 对象**/
   var state=$.data(this,"imguploaddata");
   var opts;
   if(state){
    opts = $.extend(state.options, options);
    state.options = opts;
   }else{
    opts = $.extend({},$.fn.imgupload.defaults,options);
    $.data(this,"imguploaddata",{options:opts});
   }
   init(this);
 });
 };
 $.fn.imgupload.methods={
  resize:function(jq){
    $(".main-layer").css({
    left:($(window).width()-$(".main-layer").outerwidth())/2,
    top:($(window).height()-$(".main-layer").outerheight())/2
   });
   
  }
 }
 $.fn.imgupload.defaults={
  width:100,
  height:200,
  url:'#'
 }
})(jquery);

利用formdata,ajax上传文件

/**html5 formdata**/
 function upload(jq){
  var formdata=new formdata();
  var opts = $.data(jq,"imguploaddata").options;
  formdata.append('file',$("#imgfile")[0].files[0]);
  $.ajax({
   url: opts.url,
   type: 'post',
    cache: false,
    data: formdata,
    processdata: false,
    contenttype: false,
    success:function(url){
    console.info(url);
   },
   error:function(url){
    console.info(url);
   }
  })
 }

表单file样式调整

.main-layer .a-upload { 
 padding: 4px 10px; 
 height: 20px; 
 line-height: 20px; 
 position: relative; 
 cursor: pointer; 
 color: #888; 
 background: #fafafa; 
 border: 1px solid #ddd; 
 border-radius: 4px; 
 overflow: hidden; 
 display: inline-block; 
 *display: inline; 
 *zoom: 1 ;
 width:90%;
 text-align: center;
} 
 
.a-upload input { 
 position: absolute; 
 font-size: 100px; 
 right:0; 
 top: 0; 
 opacity: 0; 
 filter: alpha(opacity=0); 
 cursor: pointer 
}

js,css弹出层样式

/***遮罩层样式**/
.wrap-overlayer{
 position: fixed;
 left: 0;
 top:0;
 width: 100%;
 height: 100%;
 background-color: rgba(0,0,0,0.3);
 z-index:10;
 display:none;
}
/**上传组件样式**/
.main-layer{
 position:absolute;
 left:50%;top:50%;
 background-color: #fff;
 width:350px;
 height: 150px;
}

后台部分代码

@requestmapping(value="/upload.do",method=requestmethod.post) 
  private void fildupload(@requestparam(value="file",required=false) multipartfile file, 
    httpservletrequest request,httpservletresponse resp)throws exception{  
   //获得物理路径webapp所在路径 
   string pathroot = request.getsession().getservletcontext().getrealpath(""); 
   string path=""; 
   if(!file.isempty()){ 
    //生成uuid作为文件名称 
    string uuid = uuid.randomuuid().tostring().replaceall("-",""); 
    //获得文件类型(可以判断如果不是图片,禁止上传) 
    string contenttype=file.getcontenttype(); 
    //获得文件后缀名称 
    string imagename=contenttype.substring(contenttype.indexof("/")+1); 
    path="/images/"+uuid+"."+imagename; 
    file.transferto(new file(pathroot+path)); 
   } 
   request.setattribute("imagespath", path); 
  } 

以上所述是小编给大家介绍的jquery自定义图片上传插件实例代码,希望对大家有所帮助