<!-- jquery file upload相关js -->

<script src="/js/jquery-file-upload/js/jquery.ui.widget.js"></script>
<script src="/js/jquery-file-upload/js/jquery.iframe-transport.js"></script>
<script src="/js/jquery-file-upload/js/jquery.fileupload.js"></script>
<script src="/js/jquery-file-upload/js/jquery.fileupload-process.js"></script>
<script src="/js/jquery-file-upload/js/jquery.fileupload-validate.js"></script>
<link rel="stylesheet" href="/js/jquery-file-upload/css/jquery.fileupload.css">
<link rel="stylesheet" href="/js/jquery-file-upload/css/jquery.fileupload-ui.css">

$('#upload_cover').fileupload({
  url: '/img/upload',
  acceptFileTypes: /(\.|\/)(png)$/i,//文件后缀控制
  maxNumberOfFiles: 1,//最大上传文件数目
  maxFileSize: 50000,
  dataType: 'json',//期望从服务器得到json类型的返回数据
  messages : {//文件错误信息
  acceptFileTypes : '文件类型不匹配',
  maxFileSize : '文件过大',
  },processfail: function (e, data) {
    var currentFile = data.files[data.index];
    if (data.files.error && currentFile.error) {
      console.log(currentFile.error);
      $('#error').text(currentFile.error);
    }
  },
  done: function (e, data) {
    $('#imgUrl').val(data.result.fileUrl);
    $('#error').text("");
  },
  fail: function (e, data) {
    $('#error').text("上传失败!"+data.files.error);
  }
});

<!--html代码,样式使用bootstrap-->

<div class="form-group ">

  <label class="control-label col-lg-2"></label>

  <div class="col-sm-5">

    <span class="btn btn-success fileinput-button">选择<input type="file" id="upload_cover" /></span>

     <font color="red" id="error"></font><br/>
  </div>
</div>
<div class="form-group ">
  <label class="control-label col-lg-2">imgUrl<font color="red">*</font></label>
  <div class="col-lg-10">
    <input type="text" name="imgUrl" id="imgUrl" class="form-control" placeholder="请选择" value="" readonly="readonly"/>
  </div>
</div>

<!--服务端代码-->

@RequestMapping(value = "/img/upload", method = { RequestMethod.POST })
public void toUpload(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception {
  // 创建一个通用的多部分解析器
  CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
  // 新建目录
  String savePath = Constans.FILE_UPLOAD_PATH + Constans.IMG_FOLDER;
  File directory = new File(savePath);
  if (!directory.exists()) {
    directory.mkdirs();
  }
  try {
    // 判断 request 是否有文件上传,即多部分请求
    if (multipartResolver.isMultipart(request)) {
      // 转换成多部分request
      MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
      // 取得request中的所有文件名
      Iterator<String> iter = multiRequest.getFileNames();
      while (iter.hasNext()) {
        // 取得上传文件
        MultipartFile file = multiRequest.getFile(iter.next());
        if (file != null) {
          // 取得当前上传文件的文件名称
          String myFileName = file.getOriginalFilename();
          if (myFileName.trim() != "") {
            // 定义上传路径
            String tarpath = savePath + myFileName;
            File localFile = new File(tarpath);
            file.transferTo(localFile);
            model.addAttribute("fileUrl", tarpath);
            model.addAttribute("fileName", myFileName);
          }
        }

      }

    }
    logger.info(">>> upload complete");
  } catch (Exception e) {
    e.printStackTrace();
    logger.info(">>> upload error");
  } finally {
    response.setContentType("application/json; charset=utf-8");
    response.setCharacterEncoding("utf-8");
    PrintWriter pw = response.getWriter();
    pw.print(new Gson().toJson(model));
    pw.flush();
    pw.close();
  }

}

jquery file upload使用的更多相关文章

  1. jQuery File Upload 单页面多实例的实现

    jQuery File Upload 的 GitHub 地址:https://github.com/blueimp/jQuery-File-Upload 插件描述:jQuery File Upload ...

  2. jQuery File Upload done函数没有返回

    最近在使用jQuery File Upload 上传图片时发现一个问题,发现done函数没有callback,经过一番折腾,找到问题原因,是由于dataType: ‘json’造成的,改为autoUp ...

  3. 用jQuery File Upload做的上传控件demo,支持同页面多个上传按钮

    需求 有这么一个需求,一个form有多个文件要上传,但又不是传统的图片批量上传那种,是类似下图这种需求,一开始是用的swfupload做的上传,但是问题是如果有多个按钮的话,就要写很多重复的代码,于为 ...

  4. jquery file upload 文件上传插件

    1. jquery file upload 下载 jquery file upload Demo 地址:https://blueimp.github.io/jQuery-File-Upload/ jq ...

  5. jQuery File Upload跨域上传

    最近在做一个一手粮互联网项目,方案为前后端分离,自己负责前端框架,采用了Requirejs+avalonjs+jquery三个框架完成. 前后端通过跨域实现接口调用,中间也发现了不少问题,尤其是在富文 ...

  6. jquery ajax发送delete(use in jquery file upload delete file)

    环境: jQuery file upload HTML example code <div class="pic-preview"> <div class=&qu ...

  7. jquery file upload 后台收到的文件名中文乱码, filename中文乱码

    在jQuery File Upload.js文件里,在以下这个js中有个成员叫做 _initXHRData, 是一个function, 在这个function的最后部分有一个if-else分支,如下:

  8. jQuery File Upload

    jQuery File Upload介绍.............................................. 2 实现基本原理......................... ...

  9. jQuery File Upload 插件 php代码分析

    jquery file upload php代码分析首先进入构造方法 __construct() 再进入 initialize()因为我是post方式传的数据  在进入initialize()中的po ...

  10. jQuery File Upload blueimp with struts2 简单试用

    Official Site的话随便搜索就可以去了 另外新版PHP似乎都有问题  虽然图片都可以上传  但是response报错  我下载的是8.8.7木有问题   但是8.8.7版本结合修改main. ...

随机推荐

  1. 微服务架构之spring cloud eureka

    Spring Cloud Eureka是spring cloud的核心组件,负责服务治理功能,起到中心枢纽作用,其它组件都依赖eureka来获取服务,然后再根据项目需求实现自己的业务,eureka在整 ...

  2. Selenium+java项目测试问题整理

    一.页面跳转到另一链接 问题描述:打开页面链接为A.com,但是页面元素需跳转到链接B.com.这时B页面将无法识别该元素,导致拨错 解决方案:重新自定义驱动,打开新链接 (PS:比较笨的解决方法,但 ...

  3. winform基础控件-例子学习

    1.如图实现整数计算器 ComboBox控件: Items属性:添加集合中的项. this.comoper.Items.AddRange(new object[] { "+", & ...

  4. package.json作用

    这个文档的内容是你必须要知道的,它必须是JSON文本格式.每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称.版本.许可证等元 ...

  5. 自动化测试基础篇--Selenium框架设计(POM)

    一.自动化测试框架 感谢木棉花的漂泊分享,内容转自链接:http://www.cnblogs.com/fengyiru6369/p/8053035.html 1.什么是自动化测试框架 简单来说,自动化 ...

  6. 使用JSONP彻底解决Ajax跨域访问Cookie Session的方案

    最近做开发时要把图片文件放到另外一台服务器上(另外一个域名),因为这样分布式存放,网站打开速度会快很多.而我采用AJAX获取图片服务器上某用户的图片时遇到了问题,按照通常的方式无法获取信息,得到的Co ...

  7. Ubuntu18.04 vmware环境下配置静态ip

    各种linux系统发行版本配置静态ip方法各不相同,dhcp获取的话ip可能会变动,如果用xshell等工具连接的时候还要改ip,很是麻烦: 参考了网上各种配置Ubuntu18.04配置静态ip的方法 ...

  8. Azure 负载内部均衡器概述

    Azure 内部负载均衡器 (ILB) 仅将流量定向到云服务内的资源,或使用 VPN 来访问 Azure 基础结构. 在这一点上,ILB 与面向 Internet 的负载均衡器不同. Azure 基础 ...

  9. August 19th 2017 Week 33rd Saturday

    Live for today and stop stressing out about tomorrow. 为今天而活,不必为明天过分担心. Stop bewailing the past misfo ...

  10. January 11 2017 Week 2nd Wednesday

    One always has time enough, if one will apply it well. 如果你能好好地利用,你总有足够的时间. If you always feel that y ...