ajaxfileupload.js实现上传文件功能


Posted in Javascript onApril 19, 2019

使用ajaxfileupload.js实现上传文件功能

一、ajaxFileUpload是一个异步上传文件的jQuery插语法:$.ajaxFileUpload([options])

options参数说明:

1、url

上传处理程序地址
2、fileElementId

  文件选择框的id属性,即的id
3、secureuri

  是否启用安全提交,默认为false
4、dataType

  服务器返回的数据类型。可以为xml,script,json,html。如果不填写,jQuery会自动判断
5、success

服务器响应成功后的处理函数 ,参数data就是服务器返回的数据
6、error

  服务器响应失败后的处理函数
7、data

  自定义参数,当有数据要和上传的文件一起传到后台处理的时候会用到。这里注意,数据格式比较严格{param:[{‘param1':'value1','param2':'value2' },{‘param1':'value3','param2':'value4' }]}, 其中单引号不能改为双引号
8、type

  提交数据的方式,一般为post

二、使用方法

第一步、先引入jquery和ajaxFileUpload插件,注意先后顺序:

<script type="text/javascript" src="js/jquery-1.10.2.min.js"></script> 
<script type= "text/javascript" src= "js/ajaxfileupload.js" ></script>

第二步、html代码

原始的,控件展示效果如下:

因为原始控件的样式无法改变,所以我们一般会让这个标签隐藏,然后点击别的标签来触发上传控件。

<input type ="file" id="ImportPicInput" name= "myfile" style=" display: none" /> 
<div class ="input-append"> 
<label for ="importPicName"> 上传原始图片:</label > 
<input type ="text" class="input-large" id= "importPicName" /> 
<a class ="btn btn-default" onclick= "$('#ImportPicInput').click();" > 打开</a> 
</div >

展现的页面效果:

第三步、js代码

在用户选择完上传图片后,需要把图片名称显示到输入框中,还需要在js文件中加入代码:

$(document).ready(function(e) { 
  $('body').on('change',$('#ImportPicInput'),function(){ 
   $( "#importPicName").val($( "#ImportPicInput").val()); 
  }); 
});

上传文件的js代码:

$.ajaxFileUpload({ 
 type: "POST", 
 url: "/toolkit/importPicFile.do", 
 data:{picParams:text},//要传到后台的参数,没有可以不写 
 secureuri : false,//是否启用安全提交,默认为false 
 fileElementId:'ImportPicInput',//文件选择框的id属性 
 dataType: 'json',//服务器返回的格式 
 async : false, 
 success: function(data){ 
  if(data.result=='success'){ 
   //coding 
  }else{ 
   //coding 
  } 
 }, 
 error: function (data, status, e){ 
  /coding 
 } 
});

第四步、java代码

@RequestMapping(value="/importPicFile.do" ,produces="text/html;charset=utf-8" ) 
 public @ResponseBody String importPicFile1(@RequestParam("picParams") String picParams, 
@RequestParam MultipartFile myfile,HttpServletRequest request){ 

   Map<String,Object> map= new HashMap<String,Object>(); 
    if(myfile.isEmpty()){ 
     map.put( "result", "error"); 
     map.put( "msg", "上传文件不能为空" ); 
   } else{ 
     String originalFilename=myfile.getOriginalFilename(); 
     String fileBaseName=FilenameUtils.getBaseName(originalFilename); 
     String floderName=fileBaseName+"_" +DateUtil.getNowTimeData(); 
     try{ 

      String genePicPath=request.getSession().getServletContext().getRealPath("/upload/" +floderName); 
       //把上传的图片放到服务器的文件夹下 
      FileUtils. copyInputStreamToFile(myfile.getInputStream(), new File(genePicPath,originalFilename)); 
       //coding 
      map.put( "result", "success"); 

     } catch (Exception e) { 
      map.put( "result", "error"); 
      map.put( "msg",e.getMessage()); 

     } 
   } 
   String result=String. valueOf(JSONObject.fromObject (map)); 
    return result; 
  }

三、注意点

(1)上文html中控件的css样式,都是用的bootstrap框架里的基本样式,也可以不用使用bootstrap框架,仅做参考。
(2)之前用的live方法,前台js报错说找不到这个方法,后来查了资料才发现,1.9以上的jquery版本已经废弃live这个方法了

$(document).ready(function(e) { 
 $('#ImportPicInput ').live( 'change', function(){ 

  }) 
});

(3)文件选择框必须要有name,即,且java代码中的变量要跟name的值保持一致,即@RequestParam MultipartFile myfile,这点非常的重要。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js获取事件源及触发该事件的对象
Oct 24 Javascript
javascripit实现密码强度检测代码分享
Dec 12 Javascript
jquery 新建的元素事件绑定问题解决方案
Jun 12 Javascript
使用jQuery判断IE浏览器版本的代码
Jun 14 Javascript
使用不同的方法结合/合并两个JS数组
Sep 18 Javascript
Bootstrap每天必学之弹出框(Popover)插件
Apr 25 Javascript
论Bootstrap3和Foundation5网格系统的异同
May 16 Javascript
Javascript 跨域知识详细介绍
Oct 30 Javascript
JS实现倒计时(天数、时、分、秒)
Nov 16 Javascript
jQuery读取本地的json文件(实例讲解)
Oct 31 jQuery
redux中间件之redux-thunk的具体使用
Apr 17 Javascript
jquery分页插件pagination使用教程
Oct 23 jQuery
AjaxFileUpload.js实现异步上传文件功能
Apr 19 #Javascript
读懂CommonJS的模块加载
Apr 19 #Javascript
js module大战
Apr 19 #Javascript
如何根据业务封装自己的功能组件
Apr 19 #Javascript
vue项目打包上传github并制作预览链接(pages)
Apr 19 #Javascript
vue组件之间的数据传递方法详解
Apr 19 #Javascript
详解keep-alive + vuex 让缓存的页面灵活起来
Apr 19 #Javascript
You might like
php调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
2012/08/08 PHP
php魔术变量用法实例详解
2014/11/13 PHP
Yii数据读取与跳转参数传递用法实例分析
2016/07/12 PHP
PHP二进制与字符串之间的相互转换教程
2016/10/14 PHP
JQuery Easyui Tree的oncheck事件实现代码
2010/05/28 Javascript
jQuery学习总结之元素的相对定位和选择器(持续更新)
2011/04/26 Javascript
33个优秀的 jQuery 图片展示插件分享
2012/03/14 Javascript
原生js ActiveXObject获取execl里面的值
2013/11/01 Javascript
js数组转json并在后台对其解析具体实现
2013/11/20 Javascript
JavaScript中用字面量创建对象介绍
2014/12/31 Javascript
AngularJS深入探讨scope,继承结构,事件系统和生命周期
2016/11/02 Javascript
canvas 画布在主流浏览器中的尺寸限制详细介绍
2016/12/15 Javascript
jQuery插件版本冲突的处理方法分析
2017/01/16 Javascript
Bootstrap BootstrapDialog使用详解
2017/02/17 Javascript
vue router路由嵌套不显示问题的解决方法
2017/06/17 Javascript
微信浏览器禁止页面下拉查看网址实例详解
2017/06/28 Javascript
详解webpack 如何集成第三方js库
2017/06/29 Javascript
微信小程序实现animation动画
2018/01/26 Javascript
小程序从手动埋点到自动埋点的实现方法
2019/01/24 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
2020/06/28 Javascript
echarts实现晶体球面投影的实例教程
2020/10/10 Javascript
Python基础之getpass模块详细介绍
2017/08/10 Python
关于Python如何避免循环导入问题详解
2017/09/14 Python
python cx_Oracle的基础使用方法(连接和增删改查)
2017/11/19 Python
python利用高阶函数实现剪枝函数
2018/03/20 Python
python如何使用socketserver模块实现并发聊天
2019/12/14 Python
浅谈keras 的抽象后端(from keras import backend as K)
2020/06/16 Python
如何解决cmd运行python提示不是内部命令
2020/07/01 Python
用HTML5制作数字时钟的教程
2015/05/11 HTML / CSS
酒店前厅员工辞职信
2014/01/08 职场文书
网管求职信
2014/03/03 职场文书
党委领导班子整改方案
2014/09/30 职场文书
Nginx配置80端口访问8080及项目名地址方法解析
2021/03/31 Servers
python 实现mysql自动增删分区的方法
2021/04/01 Python
html5 录制mp3音频支持采样率和比特率设置
2021/07/15 Javascript
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/06 PostgreSQL