最近用了一个上传的插件,趁热总结一下
原文链接
简单说一下,这个插件可以上传很多种类型的文件,兼容性也可以,我这里只用到了图片的上传,所以就说这个功能了。先说一下上传图片的大致逻辑:
1.前端选中图片上传到服务器
2.服务器会自动返回图片在服务器的路径,在这个事件里面
3.将路径赋值给需要用到的地方
话不多说,上代码:

 <p class="upload_businessImg"><button type="button" id="upload_businessImg_btn" class="upload_businessImg_btn">上传</button>请上传营业执照扫描件或照片,<span class="businessImg_err_tip">图片格式JPEG、PNG、JPG、GIF,文件大小2M以内。</span><input id="imgtoken" type="hidden" name="imgtoken" value=""><!--作为参数放在上传路径后面,看需求,可以没有这个参数,如果需求需要,则不能为空  如果为空会返回错误信息    意思是说 “令牌解析错误”  每个公司的项目里应该都有这个,是后端给出来的--><input id="supplierid" type="hidden" name="supplierid" value=""><!--作为参数放在上传路径后面,看需求,可以没有这个参数,如果需求需要,则不能为空,如果为空会返回错误信息    意思是说 “用户权限受阻”  这个根据个人情况而定,每个公司的项目里应该都有这个,是后端给出来的--><input id="functionname" type="hidden" name="functionname" value="ablu"><!-- 功能名 ,作为参数放在上传路径后面,看需求,可以没有这个参数,如果需求需要,则不能为空,   如果为空会返回错误信息  “the function is not registered!”  意思是说 “该函数未注册!” --></p><!--下面是预览图片的框,只有一个框,当然也可以有多个框 --><div class="isshow_preview_mask businessImg"><img id="businessImgSrc" src="" alt=""><div class="businessImg_mask"><div class="button_box"><button type="button" class="see_businessImg j_view_image">查看</button><button type="button" class="delt_businessImg del_img">删除</button></div></div></diiv>

参数说明图片:

// 初始化上传事件$(document).ready(function(){initUploadify_businessImg();});// 判断图片格式及大小function judgePictureFormatSize( filType, err_tip, file_size ){if(filType == "jpg" || filType == "jpeg" || filType == "png" || filType == "gif" || file_size < 2 * 1024 * 1024){err_tip.css("color","#999");return true;}else{err_tip.css("color","#FF001A");return false;}};// 上传图片function initUploadify_businessImg() {//一下各种参数的说明可以从顶部链接找到,或者看上面添加的图片var setting = {runtimes: 'html5,flash,silverlight,html4',    //默认"html5,flash,silverlight", 用来指定上传方式,指定多个上传方式请使用逗号隔开。一般情况下,你不需要配置该参数,因为Plupload默认会根据你的其他的参数配置来选择 最合适的上传方式。如果没有特殊要求的话,Plupload会首先选择html5上传方式,如果浏览器不支持html5,则会使用flash或 silverlight,如果前面两者也都不支持,则会使用最传统的html4上传方式。如果你想指定使用某个上传方式,或改变上传方式的优先顺序,则你 可以配置该参数。browse_button: 'upload_businessImg_btn', //触发文件选择对话框的DOM元素,当点击该元素后便后弹出文件选择对话框。该值可以是DOM元素对象本身,也可以是该DOM元素的idcontainer: $('#upload_businessImg_btn').parent()[0],       //用来指定Plupload所创建的html结构的父容器,默认为前面指定的browse_button的父元素。该参数的值可以是一个元素的id,也可以是DOM元素本身。url: '',    //这里的路径就是上传图片的基础路径,比如:https://XXX.XXX.com/uploadfile,路径后面要跟参数,见下面 uploader.setOptionmultipart: true,       //为true时将以multipart/form-data的形式来上传文件,为false 时则以二进制的格式来上传文件。html4上传方式不支持以二进制格式来上传文件,在flash上传方式中,二进制上传也有点问题。并且二进制格式上传还 需要在服务器端做特殊的处理。一般我们用multipart/form-data的形式来上传文件就足够了。http_method: 'get', multi_selection: true,  //是否可以在文件浏览对话框中选择多个文件,true为可以,false为不可以。默认true,即可以选择多个文件。需要注意的是,在某些不支持 多选文件的环境中,默认值是false。比如在ios7的safari浏览器中,由于存在bug,造成不能多选文件。当然,在html4上传方式中,也是 无法多选文件的。filters: {mime_types : [ //只允许上传图片{ title : "Image files", extensions : "jpg,gif,png,jpeg" }],max_file_size : '2048kb', //最大只能上传2048kb的文件},file_data_name: 'file',flash_swf_url: 'js/Moxie.swf',   //这个文件可以从本文章顶部的链接里面找,下载下来,文件的路径可以是相对的,也可以是绝对的silverlight_xap_url: 'js/Moxie.xap',    //同上init: {PostInit: function(uploader) {$('filelist').innerHTML = '';$('uploadfiles').onclick = function() {uploader.start();return false;};},FilesAdded: function(uploader, files) {plupload.each(files, function(file) {var filType =  file.name ?  file.name.split('.') : [] ; var imgtoken = $("#imgtoken").val();var functionname = $("#functionname").val();var supplierid = $('#supplierid').val();var businessImg_err_tip = $(".businessImg_err_tip");if( judgePictureFormatSize( filType, businessImg_err_tip, file.size ) ){uploader.setOption({url:"https://upload.dhgate.com/uploadfile?functionname=" + functionname + "&supplierid=" + supplierid + "&token=" + imgtoken}); uploader.start();}else{return false;}});},FileUploaded: function(uploader, file, responseObject) {if (responseObject != "") {var s_value = window.eval("(" + responseObject.response + ")");var imgurl = s_value.l_imgurl;var businessImg_src = $("#businessImgSrc").attr("src");console.log(s_value)if( imgurl == null || undefined || "" ){$(".businessImg_upload_err").text("抱歉,图片上传失败,请稍后再试。");$("#businessImg_box").find("img[src='']").attr("src","");}else{$(".businessImg_upload_err").text("");if ( businessImg_src == "" ) {businessImg_src = imgBaseUlr + "" + imgurl;$("#businessImgSrc").attr("src",businessImg_src);}} }},Error: function(uploader, err) {$.each(uploader.files, function() {$(".businessImg_upload_err").text("抱歉,图片上传失败,请稍后再试。");})return false}}}}

要说坑的话,我遇到的是上面那几个隐藏域的input,基于业务需求传递参数,后台获取的参数到没什么,就是那个functionnme比较难搞,需要在公司某个系统里先注册,完了把functionname的值(也就是注册的事件名称)当作参数传回去作为验证。

总结--上传插件Upload.js的使用相关推荐

  1. ipad html 自定义裁剪图片大小,移动端图片裁剪上传插件 Mavatar.js(原创)

    插件描述:移动端头像上传,支撑头像预览和放大缩小平移,内置上传至后端请求方法. 注:请在移动端用手势查看缩放效果,PC端无法缩放 Mavatar 移动端头像上传,支撑头像预览和放大缩小平移,内置上传至 ...

  2. jquery 分片上传php,jquery 大文件分片上传插件 fcup.js

    软件介绍 fcup.js fcup 是一款支持大文件切片上传插件.该jquery插件使用简单,配置简单明了,支持上传类型指定,进度条查看上传进度.. 安装 直接下载源码,上传功能需要php环境,演示地 ...

  3. 上传插件dropzone.js实例

    dropzone.js默认是Ajax上传图片给服务器,那么如何获取到图片名呢?其实我们是可以通过dropzone的success函数获取到服务器返回的数据 dropzone.js在HTML的配置如下: ...

  4. dropzone java实例_上传插件dropzone.js实例

    dropzone.js默认是Ajax上传图片给服务器,那么如何获取到图片名呢?其实我们是可以通过dropzone的success函数获取到服务器返回的数据 dropzone.js在HTML的配置如下: ...

  5. java ajax多文件上传插件_ajaxFileUpload.js插件支持多文件上传的方法

    前提条件: ajaxFileUpload.js插件多文件上传 步骤: 1.修改源码,(源码只支持单个文件的上传): //修改前代码------- //var oldElement = jQuery(' ...

  6. JavaScript 文件拖拽上传插件 dropzone.js 介绍

    dropzone.js 是一个开源的 JavaScript 库,提供 AJAX 异步上传功能. 安装 下载dropzone.js文件并添加到页面中即可.Dropzone 不依赖 jQuery 框架. ...

  7. php dropzone.js中文教程,JavaScript 文件拖拽上传插件 dropzone.js 介绍

    dropzone.js 是一个开源的 JavaScript 库,提供 AJAX 异步上传功能. 安装 下载dropzone.js文件并添加到页面中即可.Dropzone 不依赖 jQuery 框架. ...

  8. js插件---IUpload文件上传插件(包括图片)

    js插件---IUpload文件上传插件(包括图片) 一.总结 一句话总结:上传插件找到真正上传位置的代码,这样就可以知道整个上传插件的逻辑了, 找资料还是github+官方 1.如何在js中找到真正 ...

  9. fileupload的回调方法_jQuery File Upload文件上传插件使用详解

    本篇教程介绍了jQuery File Upload文件上传插件使用详解,希望阅读本篇文章以后大家有所收获,帮助大家对jQuery的理解更加深入. < jQuery File Upload 是一个 ...

  10. ajax 批量上传图片插件,jQuery多文件上传插件jquery.imageuploader.js

    插件描述:jQuery多文件上传插件jquery.imageuploader.js,可以同时上传多个文件并支持拖拽上传 jquery.imageuploader.js 一款jquery多文件上传插件. ...

最新文章

  1. 王璋等揭示慢性阻塞性肺疾病炎症内型与呼吸道微生物组的关系(IF 21)
  2. RIPv1与RIPv2互通
  3. Android --- Android Studio 内无法直接运行 main 方法
  4. 将solr安装到tomcat里
  5. 问题 1046: [编程入门]自定义函数之数字后移
  6. c语言函数的形参有几个,C中子函数最多有几个形参
  7. python数值运算代码_Python数值
  8. win10安装ubuntu虚拟机
  9. word2016 删除页眉横线
  10. django orm 重点大全
  11. C#,VB.NET如何将Word转换为PDF和Text
  12. arcmap10.7打开tif文件一片空白 | 解决方法
  13. 高仿富途牛牛-组件化-界面美化
  14. 17*开头的是什么号码?为什么17开头手机号最好不要用
  15. 使用WebGL 自定义 3D 摄像头监控模型
  16. 力扣算法之两矩形求和
  17. 十年阿里P6大牛谈外包!
  18. 表面等离子体共振新进展!
  19. Zion无代码,流量主介绍和使用
  20. Pytorch中DistributedSampler()中的随机因素

热门文章

  1. Android小知识- LayoutInflater
  2. jzxx1107字符图形6-星号倒三角
  3. ioDraw - 好用的流程图绘制软件
  4. 玩qq游戏提示计算机内存不足,win10系统玩游戏提示“计算机内存不足”怎么办...
  5. J2SDK 安装配置指南
  6. CSS border设置虚线可调节虚线间距
  7. Golang 解析XML
  8. 易用的两个OCR(图像文字识别提取)开源项目
  9. 应该被记住的天才,写在图灵诞辰100周年
  10. 消息队列——MQ(Message Queue)