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 相关文章推荐
动态调用css文件——jquery的应用
Feb 20 Javascript
flash+jQuery实现可关闭及重复播放的压顶广告
Apr 15 Javascript
js中判断变量类型函数typeof的用法总结
Aug 09 Javascript
Vuejs 页面的区域化与组件封装的实现
Sep 11 Javascript
Vue shopCart 组件开发详解
Jan 26 Javascript
微信小程序如何获取用户手机号
Jan 26 Javascript
聊聊JS动画库 Velocity.js的使用
Mar 13 Javascript
详解JavaScript添加给定的标签选项
Sep 17 Javascript
详解用场景去理解函数柯里化(入门篇)
Apr 11 Javascript
react-router-dom 嵌套路由的实现
May 02 Javascript
用webAPI实现图片放大镜效果
Nov 23 Javascript
详解JavaScript的计时器和按钮效果设置
Feb 18 Javascript
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开发负载均衡指南
2010/07/17 PHP
使用 PHPMAILER 发送邮件实例应用
2012/11/07 PHP
解析php时间戳与日期的转换
2013/06/06 PHP
php实现给二维数组中所有一维数组添加值的方法
2017/02/04 PHP
JS中简单的实现像C#中using功能(有源码下载)
2007/01/09 Javascript
神奇的代码 通杀各种网站-可随意修改复制页面内容
2008/07/17 Javascript
JavaScript.The.Good.Parts阅读笔记(二)作用域&amp;闭包&amp;减缓全局空间污染
2010/11/16 Javascript
node.js使用nodemailer发送邮件实例
2014/03/10 Javascript
jQuery EasyUI API 中文帮助文档和扩展实例
2016/08/01 Javascript
JS绘制微信小程序画布时钟
2016/12/24 Javascript
超全面的vue.js使用总结
2017/02/12 Javascript
jQuery自定义元素右键点击事件(实现案例)
2017/04/28 jQuery
js禁止表单重复提交
2017/08/29 Javascript
判断滚动条滑到底部触发事件(实例讲解)
2017/11/15 Javascript
关于vue面试题汇总
2018/03/20 Javascript
JavaScript变量提升和严格模式实例分析
2019/01/27 Javascript
微信小程序实现搜索历史功能
2020/03/26 Javascript
ES6 Set结构的应用实例分析
2019/06/26 Javascript
微信小程序 wxParse插件显示视频问题
2019/09/27 Javascript
Python的Django框架中从url中捕捉文本的方法
2015/07/20 Python
Python抓取框架 Scrapy的架构
2016/08/12 Python
Python 实现「食行生鲜」签到领积分功能
2018/09/26 Python
YSL圣罗兰美妆美国官网:Yves Saint Lauret US
2016/11/21 全球购物
电子信息工程专业推荐信
2014/02/14 职场文书
2014年端午节活动方案
2014/03/11 职场文书
民主生活会对照检查材料(统计局)
2014/09/21 职场文书
党员干部反四风民主生活会对照检查材料思想汇报
2014/10/12 职场文书
工人先锋号申报材料
2014/12/29 职场文书
离婚财产分割协议书
2015/08/11 职场文书
大学生志愿者心得体会
2016/01/15 职场文书
企业文化学习心得体会
2016/01/21 职场文书
年终工作总结范文
2019/06/20 职场文书
Python+Selenium自动化环境搭建与操作基础详解
2022/03/13 Python
MySQL三种方式实现递归查询
2022/04/18 MySQL
MySQL选择合适的备份策略和备份工具
2022/06/01 MySQL
SpringBoot Http远程调用的方法
2022/08/14 Java/Android