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 相关文章推荐
基于jquery自定义图片热区效果
Jul 21 Javascript
js关闭浏览器窗口及检查浏览器关闭事件
Sep 03 Javascript
浅谈JavaScript Date日期和时间对象
Dec 29 Javascript
jquery 动态增加,减少input表单的简单方法(必看)
Oct 12 Javascript
Angular.js跨controller实现参数传递的两种方法
Feb 20 Javascript
JavaScript瀑布流布局实现代码
May 06 Javascript
JavaScript限定范围拖拽及自定义滚动条应用(3)
May 17 Javascript
聊聊那些使用前端Javascript实现的机器学习类库
Sep 18 Javascript
node文字生成图片的示例代码
Oct 26 Javascript
webpack多页面开发实践
Dec 18 Javascript
微信小程序实现文件预览
Oct 22 Javascript
JS创建或填充任意长度数组的小技巧汇总
Oct 24 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 SQL防注入代码集合
2008/04/25 PHP
解析PHP中VC6 X86和VC9 X86的区别及 Non Thread Safe的意思
2013/06/28 PHP
php对二维数组按指定键值key排序示例代码
2013/11/26 PHP
php面向对象基础详解【星际争霸游戏案例】
2020/01/23 PHP
javascript OFFICE控件测试代码
2009/12/08 Javascript
jquery.jstree 增加节点的双击事件代码
2010/07/27 Javascript
js不完美解决click和dblclick事件冲突问题
2012/07/16 Javascript
javascript使用中为什么10..toString()正常而10.toString()出错呢
2013/01/11 Javascript
javascript 日期时间 转换的方法
2013/02/21 Javascript
使用jQuery的attr方法来修改onclick值
2014/07/07 Javascript
浅谈JavaScript的Polymer框架中的事件绑定
2015/07/29 Javascript
bootstrap实现弹窗和拖动效果
2016/01/03 Javascript
HTML5+jQuery实现搜索智能匹配功能
2017/03/24 jQuery
Angularjs 1.3 中的$parse实例代码
2017/09/14 Javascript
使用Angular CLI进行Build(构建)和Serve详解
2018/03/24 Javascript
node.js利用socket.io实现多人在线匹配联机五子棋
2018/05/31 Javascript
webpack实现一个行内样式px转vw的loader示例
2018/09/13 Javascript
JS回调函数 callback的理解与使用案例分析
2019/09/09 Javascript
python实现中文分词FMM算法实例
2015/07/10 Python
Python 多线程抓取图片效率对比
2016/02/27 Python
详解python中xlrd包的安装与处理Excel表格
2016/12/16 Python
Python实现的圆形绘制(画圆)示例
2018/01/31 Python
Tensorflow实现AlexNet卷积神经网络及运算时间评测
2018/05/24 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
2019/01/17 Python
Python中的random.uniform()函数教程与实例解析
2019/03/02 Python
利用CSS3把图片变成灰色模式的实例代码
2016/09/06 HTML / CSS
HTML5 Canvas玩转酷炫大波浪进度图效果实例(附demo)
2016/12/14 HTML / CSS
英国第一豪华护肤品牌:Elemis
2017/10/12 全球购物
美国医疗用品、医疗设备和家庭保健用品商店:Medical Supply Depot
2018/07/08 全球购物
常见的软件开发流程有哪些
2015/11/14 面试题
爱岗敬业演讲稿范文
2014/01/14 职场文书
微信营销策划方案
2014/02/24 职场文书
调查研究项目计划书
2014/04/29 职场文书
高二学年自我鉴定范文(2篇)
2014/09/26 职场文书
五年级作文之成长
2019/09/16 职场文书
我的收音机情缘
2022/04/05 无线电