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中style属性
Oct 11 Javascript
js自定义事件代码说明
Jan 31 Javascript
JavaScript实现Java中StringBuffer的方法
Feb 09 Javascript
JavaScript中的this到底是什么(一)
Dec 09 Javascript
JavaScript暂停和继续定时器的实现方法
Jul 18 Javascript
AngularJS入门教程之多视图切换用法示例
Nov 02 Javascript
JS实现图片居中悬浮效果
Dec 25 Javascript
JS立即执行函数功能与用法分析
Jan 15 Javascript
Webpack设置环境变量的一些误区详解
Dec 19 Javascript
vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)
Jan 14 Javascript
vue中使用带隐藏文本信息的图片、图片水印的方法
Apr 24 Javascript
vue项目启动出现cannot GET /服务错误的解决方法
Apr 26 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+Html+缓存
2006/11/25 PHP
写出高质量的PHP程序
2012/02/04 PHP
PHP中判断变量为空的几种方法分享
2013/08/26 PHP
CI框架自动加载session出现报错的解决办法
2014/06/17 PHP
php利用反射实现插件机制的方法
2015/03/14 PHP
基于jquery实现日历签到功能
2020/09/11 Javascript
分享jQuery网页元素拖拽插件
2020/12/01 Javascript
js实现四舍五入完全保留两位小数的方法
2016/08/02 Javascript
JS实现重新加载当前页面
2016/11/29 Javascript
基于JavaScript实现图片剪切效果
2017/03/07 Javascript
Angularjs自定义指令Directive详解
2017/05/27 Javascript
利用Angular.js编写公共提示模块的方法教程
2017/05/28 Javascript
JS滚动到指定位置导航栏固定顶部
2017/07/03 Javascript
详解js的视频和音频采集
2018/08/09 Javascript
如何用原生js写一个弹窗消息提醒插件
2019/05/24 Javascript
解决layui laydate 时间控件一闪而过的问题
2019/09/28 Javascript
Vue页面手动刷新,实现导航栏激活项还原到初始状态
2020/08/06 Javascript
python使用7z解压软件备份文件脚本分享
2014/02/21 Python
Python ORM框架SQLAlchemy学习笔记之关系映射实例
2014/06/10 Python
python使用PIL模块实现给图片打水印的方法
2015/05/22 Python
PyQt5每天必学之关闭窗口
2018/04/19 Python
元组列表字典(莫烦python基础)
2019/04/03 Python
Python之NumPy(axis=0 与axis=1)区分详解
2019/05/27 Python
Python3中对json格式数据的分析处理
2021/01/28 Python
css3实现背景动态渐变效果
2019/12/10 HTML / CSS
HTML5实现晶莹剔透的雨滴特效
2014/05/14 HTML / CSS
boostrap modal 闪现问题的解决方法
2020/09/01 HTML / CSS
UGG雪地靴德国官网:UGG德国
2016/11/19 全球购物
Hotels.com台湾:饭店订房网
2017/09/06 全球购物
行政助理的职责
2013/11/14 职场文书
社区中秋节活动方案
2014/01/29 职场文书
五年级音乐教学反思
2014/02/06 职场文书
彩妆大赛策划方案
2014/05/13 职场文书
个人欠款担保书
2014/05/20 职场文书
教师纪律作风整顿心得体会
2016/01/23 职场文书
世界十大狙击步枪排行榜
2022/03/20 杂记