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


Posted in Javascript onAugust 13, 2016

一直以来上传文件都是使用form表单上传文件,也看到过有人使用js上传文件,不过看起来蛮简单的也就没有怎么去理会。今天突然要使用这种方式上传文件,期间还遇到点问题。因此就记录下来,方便以后遇到这样的问题可以查看。

首先就是引入js和ajaxfileupload的文件,这个不需要多说。

然后就是ajax请求后台地址。代码如下: 

<div class="btn-file-box pos-rel">
   <input type="file" id="upload" name="upload" style="font-size: 0;opacity: 0;width: 100%;height: 100%;position: absolute;left: 0;top: 0;"/>
 <span class="btn ">选择文件</span>
 </div> 


$("#upload").on("change",function(){
    $.ajaxFileUpload({
      url : '/test/user/imgUpload',//后台请求地址
      type: 'post',//请求方式 当要提交自定义参数时,这个参数要设置成post
      secureuri : false,//是否启用安全提交,默认为false。 
      fileElementId : 'upload',// 需要上传的文件域的ID,即<input type="file">的ID。
      dataType : 'json',//服务器返回的数据类型。可以为xml,script,json,html。如果不填写,jQuery会自动判断。如果json返回的带pre,这里修改为json即可解决。
      success : function (json, status) {//提交成功后自动执行的处理函数,参数data就是服务器返回的数据。
         alert(json.retMsg);
      },
      error : function (json, status, e) {//提交失败自动执行的处理函数。
        
      }
    });
  });

前台代码完成就开始开发后台代码了。

package com.roc.test;import java.io.File;import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import net.sf.json.JSONObject;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.jboss.resteasy.annotations.providers.jaxb.json.BadgerFish;
import org.springframework.stereotype.Controller;import net.sf.json.JSONObject;/**
 * 上传文件
 * @author liaowp
 *
 */
@Controller
@Path("/user")
public class UploadImg {
  
  @Path("/imgUpload")
  @POST
  @Produces("application/json; charset=utf-8")
  @Consumes(MediaType.MULTIPART_FORM_DATA ) 
  @BadgerFish
  public JSONObject upload(@QueryParam("orderId") String orderId,@Context HttpServletRequest request,@Context HttpServletResponse response) {
    JSONObject jsonobj = new JSONObject();
    String file_path=request.getSession().getServletContext().getRealPath("/")+File.separator+"corpfile"+File.separator;//文件存储路径  
    String upload_file_path="";
    File file =new File(file_path);  
    if(!file.exists() && !file.isDirectory()){ //如果文件夹不存在则创建    
       file.mkdir();
       upload_file_path=file_path;
    }else{
       upload_file_path=file_path;
    }
    DiskFileItemFactory factory = new DiskFileItemFactory(); // 设置工厂 
    factory.setRepository(new File(file_path));// 设置文件存储位置
    factory.setSizeThreshold(2048 * 1024);// 设置大小,如果文件小于设置大小的话,放入内存中,如果大于的话则放入磁盘中
    ServletFileUpload upload = new ServletFileUpload(factory);
    upload.setHeaderEncoding("utf-8");// 这里就是中文文件名处理的代码,其实只有一行
    String fileName = "";
    List<FileItem> list;
    JSONObject jsonobj = new JSONObject();
    try {
      list = upload.parseRequest(request);
      for (FileItem item : list) {
        if (item.isFormField()) {
          String name = item.getFieldName();
          String value = item.getString("utf-8");
        } else {
          String name = item.getFieldName();
          String value = item.getName();
          fileName =name + ".jpg";
          if (item.getSize() > 10485760) {//您好,上传文件要小于10M!
            jsonobj.put("retCode","100");
            jsonobj.put("retMsg","您好,上传文件要小于10M!"):
          } else {//上传成功
            item.write(new File(upload_file_path, fileName));
            System.out.println(File.separator + "corpfile" + File.separator + fileName);
            jsonobj.put("retCode","0");
            jsonobj.put("retMsg","您好,上传成功!");
          }
        }
      }
    } catch (Exception e) {//上传失败
      e.printStackTrace();
      jsonobj.put("retCode","9999");

 jsonobj.put("retMsg","您好,文件上传失败,");
    }
    return jsonobj;
  }

}

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

Javascript 相关文章推荐
js 操作符实例代码
Oct 24 Javascript
鼠标滑上去后图片放大浮出效果的js代码
May 28 Javascript
关于jQuery的inArray 方法介绍
Oct 08 Javascript
javascript多行字符串的简单实现方式
May 04 Javascript
常用的js验证和数据处理总结
Aug 02 Javascript
实例讲解JavaScript中call、apply、bind方法的异同
Sep 13 Javascript
微信小程序 引入es6 promise
Apr 12 Javascript
利用jsonp与代理服务器方案解决跨域问题
Sep 14 Javascript
简单的Vue异步组件实例Demo
Dec 27 Javascript
解决在vue项目中webpack打包后字体不生效的问题
Sep 01 Javascript
JS 遍历 json 和 JQuery 遍历json操作完整示例
Nov 11 jQuery
详解Vue的异步更新实现原理
Dec 22 Vue.js
几种二级联动案例(jQuery\Array\Ajax php)
Aug 13 #Javascript
漂亮! js实现颜色渐变效果
Aug 12 #Javascript
jQuery ztree实现动态树形多选菜单
Aug 12 #Javascript
jquery表格datatables实例解析 直接加载和延迟加载
Aug 12 #Javascript
jquery插件uploadify多图上传功能实现代码
Aug 12 #Javascript
Javascript中的对象和原型(二)
Aug 12 #Javascript
JavaScript中的对象和原型(一)
Aug 12 #Javascript
You might like
linux下 C语言对 php 扩展
2008/12/14 PHP
一波PHP中cURL库的常见用法代码示例
2016/05/06 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
2016/12/29 PHP
图片自动缩小的js代码,用以防止图片撑破页面
2007/03/12 Javascript
jQuery1.6 使用方法一
2011/11/23 Javascript
jQuery中将函数赋值给变量的调用方法
2012/03/23 Javascript
javascript表单验证 - Parsley.js使用和配置
2013/01/25 Javascript
浅谈jquery回调函数callback的使用
2015/01/30 Javascript
在for循环中length值是否需要缓存
2015/07/27 Javascript
jQuery Mobile框架中的表单组件基础使用教程
2016/05/17 Javascript
酷! 不同风格页面布局幻灯片特效js实现
2021/02/19 Javascript
Html中 IFrame的用法及注意点
2016/12/22 Javascript
小程序实现发表评论功能
2018/07/06 Javascript
解决vue项目中页面调用数据 在数据加载完毕之前出现undefined问题
2019/11/14 Javascript
Vuex的API文档说明详解
2020/02/05 Javascript
Vue实现简单的跑马灯
2020/05/25 Javascript
vue二选一tab栏切换新做法实现
2021/01/19 Vue.js
Tornado Web服务器多进程启动的2个方法
2014/08/04 Python
Python常用随机数与随机字符串方法实例
2015/04/09 Python
Python2.x中文乱码问题解决方法
2015/06/02 Python
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
2018/01/09 Python
PyTorch中的Variable变量详解
2020/01/07 Python
Python实现结构体代码实例
2020/02/10 Python
详解python百行有效代码实现汉诺塔小游戏(简约版)
2020/10/30 Python
amazeui时间组件的实现示例
2020/08/18 HTML / CSS
声明struct x1 { . . . }; 和typedef struct { . . . }x2;有什么不同
2012/06/02 面试题
师范生个人推荐信
2013/11/29 职场文书
《与象共舞》教学反思
2014/02/24 职场文书
2014国庆节商场促销活动策划方案
2014/09/16 职场文书
个人汇报材料范文
2014/12/30 职场文书
2015年重阳节慰问信
2015/03/23 职场文书
名人传读书笔记
2015/06/26 职场文书
安全教育主题班会教案
2015/08/12 职场文书
python爬不同图片分别保存在不同文件夹中的实现
2021/04/02 Python
Python尝试实现蒙特卡罗模拟期权定价
2022/04/21 Python
SQL Server中的逻辑函数介绍
2022/05/25 SQL Server