首先下载源码
文件名 jquery.uploadView.js(注意先后顺序,jquery必须要在插件之前引入)
// 图片上传前预览插件 //Power By 勾国印 //QQ:245629560 //Blog:http://www.gouguoyin.cn (function($){ $.fn.uploadView = function(options){ var defaults = { uploadBox: '.js_uploadBox', //设置上传框容器 showBox : '.js_showBox', //设置显示预览图片的容器 /*width : 200, //设置预览图片的宽度*/ height: 240, //设置预览图片的高度 allowType: ["gif", "jpeg", "jpg", "bmp", "png"], maxSize: 1, //设置允许上传图片的最大尺寸,单位M success:$.noop //上传成功时的回调函数 }; var config = $.extend(defaults, options); var showBox = config.showBox; var uploadBox = config.uploadBox; var width = config.width; var height = config.height; var allowType = config.allowType; var maxSize = config.maxSize; var success = config.success; $(this).each(function(i){ $(this).change(function(e){ handleFileSelect($(this), width, height, allowType, maxSize, success); }); }); var handleFileSelect = function(obj, _w, _h, _type, _size, _callback){ if (typeof FileReader == "undefined") { return false; } var thisClosest = obj.closest(uploadBox); if (typeof thisClosest.length == "undefined") { return; } var files = obj[0].files; var f = files[0]; if (!isAllowFile(f.name, _type)) { alert("图片类型必须是" + _type.join(",") + "中的一种"); return false; } var fileSize = f.size; var maxSize = _size*1024*1024; if(fileSize > maxSize){ alert('上传图片超出允许上传大小'); return false; } var reader = new FileReader(); reader.onload = (function(theFile){ return function (e) { var tmpSrc = e.target.result; if (tmpSrc.lastIndexOf('data:base64') != -1) { tmpSrc = tmpSrc.replace('data:base64', 'data:image/jpeg;base64'); } else if (tmpSrc.lastIndexOf('data:,') != -1) { tmpSrc = tmpSrc.replace('data:,', 'data:image/jpeg;base64,'); } var img = '<img src="' + tmpSrc + '"/>'; //consoleLog(reader, img); thisClosest.find(showBox).show().html(img); if (_w && _h) { cssObj = { 'width':_w+'px', 'height':_h+'px' }; } else if (_w) { cssObj = { 'width':_w+'px' }; } else if (_h) { cssObj = { 'height':_h+'px' }; } else { cssObj = { 'max-width':'100%', 'max-height':'100%' }; } thisClosest.find(showBox+" img").css( cssObj ); _callback(); }; })(f) reader.readAsDataURL(f); } //获取上传文件的后缀名 var getFileExt = function(fileName){ if (!fileName) { return ''; } var _index = fileName.lastIndexOf('.'); if (_index < 1) { return ''; } return fileName.substr(_index+1); }; //是否是允许上传文件格式 var isAllowFile = function(fileName, allowType){ var fileExt = getFileExt(fileName).toLowerCase(); if (!allowType) { allowType = ['jpg', 'jpeg', 'png', 'gif', 'bmp']; } if ($.inArray(fileExt, allowType) != -1) { return true; } return false; } }; })(jQuery); jQuery.extend({ unselectContents: function(){ if(window.getSelection) window.getSelection().removeAllRanges(); else if(document.selection) document.selection.empty(); } }); jQuery.fn.extend({ selectContents: function(){ $(this).each(function(i){ var node = this; var selection, range, doc, win; if ((doc = node.ownerDocument) && (win = doc.defaultView) && typeof win.getSelection != 'undefined' && typeof doc.createRange != 'undefined' && (selection = window.getSelection()) && typeof selection.removeAllRanges != 'undefined'){ range = doc.createRange(); range.selectNode(node); if(i == 0){ selection.removeAllRanges(); } selection.addRange(range); } else if (document.body && typeof document.body.createTextRange != 'undefined' && (range = document.body.createTextRange())){ range.moveToElementText(node); range.select(); } }); }, setCaret: function(){ if(!$.browser.msie) return; var initSetCaret = function(){ var textObj = $(this).get(0); textObj.caretPos = document.selection.createRange().duplicate(); }; $(this).click(initSetCaret).select(initSetCaret).keyup(initSetCaret); }, insertAtCaret: function(textFeildValue){ var textObj = $(this).get(0); if(document.all && textObj.createTextRange && textObj.caretPos){ var caretPos=textObj.caretPos; caretPos.text = caretPos.text.charAt(caretPos.text.length-1) == '' ? textFeildValue+'' : textFeildValue; } else if(textObj.setSelectionRange){ var rangeStart=textObj.selectionStart; var rangeEnd=textObj.selectionEnd; var tempStr1=textObj.value.substring(0,rangeStart); var tempStr2=textObj.value.substring(rangeEnd); textObj.value=tempStr1+textFeildValue+tempStr2; textObj.focus(); var len=textFeildValue.length; textObj.setSelectionRange(rangeStart+len,rangeStart+len); textObj.blur(); }else{ textObj.value+=textFeildValue; } } });
在模板页加入上传框,html:
<div class="control-group js_uploadBox"> <div class="btn-upload"> <a href="javascript:void(0);"><i class="icon-upload"></i><span class="js_uploadText">上传</span>图片</a> <input class="js_upFile" type="file" name="cover" id="btnimages"> </div> <div class="js_showBox "><img class="js_logoBox" src="" width="100px" ></div> </div>
js:
$(".js_upFile").uploadView({ uploadBox: '.js_uploadBox',//设置上传框容器 showBox : '.js_showBox',//设置显示预览图片的容器 width : 100, //预览图片的宽度,单位px height : 100, //预览图片的高度,单位px allowType: ["gif", "jpeg", "jpg", "bmp", "png"], //允许上传图片的类型 maxSize :2, //允许上传图片的最大尺寸,单位M success:function(e){ $(".js_uploadText").text('更改'); alert('图片上传成功'); } });
ajax请求要传的参数之一:var docFile=document.getElementById("btnimages").files[0];
new FormData()
一般的使用:
1.用一些键值对来模拟一系列表单控件:即把form中所有表单元素的name与value组装成
一个queryString
2. 异步上传二进制文件。
//图片上传接口 function addImages(){ var docFile=document.getElementById("btnimages").files[0]; var doctorId=$("#usersnumber").val(); var formData=new FormData(); //上传formdata封装的数据 formData.append("myFile",docFile); formData.append("doctorId",doctorId); $.ajax({ url:"http://localhost:8080/doctormanage/file/updoctorphoto.do", type:"post", data:formData, cache:false, processData:false, contentType:false, success:function(result){ if(result.state==0){ alert("图片上传成功"); }else{ alert("图片上传失败"); } } }); };
获取图片名称:
//图片获取名 function imgSear(){ var str; $('#btnimages').change(function(){//点击选择修改图片时 str=$(this).val(); var arr=str.split('\'); var my=arr[arr.length-1]; $("#choiceimages").val(my); }); }