解决 jquery.form.js和springMVC上传 MultipartFile取不到信息

前段页面:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html >
<html>
<head>
    <title>个人信息</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta content="width=device-width; initial-scale=1.0; minimum-scale=1.0; maximum-scale=1.0;user-scalable=no" name="viewport">
    <meta content="640" name="MobileOptimized">
    <meta content="YES" name="apple-touch-fullscreen">
    <meta content="yes" name="apple-mobile-web-app-capable">
    <link href="${ROOT_PATH }content/css/staff/employee.css" type="text/css" rel="stylesheet"/>
    <link href="${ROOT_PATH }content/css/staff/font-awesome.min.css" type="text/css" rel="stylesheet"/>
       <script src="${ROOT_PATH }content/scripts/jquery-1.10.1.min.js"></script>
       <script src="${ROOT_PATH }content/scripts/jquery.form.js"></script>
       <script src="${ROOT_PATH }content/scripts/staff/staff.js"></script>
</head>
<body>
    <form action="${ROOT_PATH }Staff/index/upload" name="stafform" id="stafform" method="post">
        <c:set var="head" value="${ROOT_PATH }content/images/staff/photo.png"/>
        <c:if test="${!empty staff.imageurl.value }">
            <c:set var="head" value="${staff.imageurl.value }"/>    
        </c:if>
        <c:set var="headx" value="${ROOT_PATH }content/images/staff/img1.jpg"/>
        <c:if test="${!empty staff.imageurlb.value }">
            <c:set var="headx" value="${staff.imageurlb.value }"/>    
        </c:if>
        <div class="avatar"><a class="photo" href="#"><img id="imghead" src="${head}"/><input id="imagev" name="image" onchange="previewImage(this)" type="file" class="photo_put" value="" /></a><input type="text" name="hm" value="${staff.staffename.value}"/></div>
        <div class="per_infor_box">
            <ul class="per_infor">
                <li><label>门 店</label><input type="text" value="${staff.commpanyName.value}" disabled="disabled" /></li>
                <li><label>职 位</label><input type="text" value="${staff.position.value }" disabled="disabled"/></li>
                <li><label>姓 名</label><input type="text" value="${staff.staffname.value }" disabled="disabled"/></li>
                <li><label>手 机</label><input type="text" value="${staff.mobilephone.value }" disabled="disabled"/></li>
                <li><label>工 龄</label><input type="text" value="${staff.workTime.value }" disabled="disabled"/></li>
                <li><label>身份证</label><input type="text" value="${staff.pccid.value }" disabled="disabled"/></li>
                <li><label>自我介绍</label><textarea disabled="disabled">${staff.description.value }</textarea></li>
            </ul>
        </div>
        <div class="bottom infor_bot">       
            <input class="present" type="submit" value="提 交"/>
        </div>
    </form>
</body>

<script type="text/javascript">
    $(function () {
        $('#stafform').submit(function () {
            var options = {
                dataType: 'json',
                success: function (txt) {
                    if (txt.isok) {
                        alert("保存成功");
                        location.reload(true);
                        return false;
                    } else {
                        alert(txt.data);
                        return false;
                    }
                }
            };
            $('#stafform').ajaxSubmit(options);
            return false;
        });
    });
</script>
</html>

后台代码:

package amani.wechat.platform.controller;

import java.io.IOException;
import java.util.Date;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import javax.xml.bind.JAXBElement;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import amani.wechat.platform.controller.model.Result;
import amani.wechat.platform.services.ICommonService;
import amani.wechat.platform.utils.CompressPic;
import amani.wechat.platform.webserviceClient.StaffHairDesignerInfo;
import amani.wechat.platform.webserviceClient.Staffinfo;
import amani.wechat.platform.webserviceClient.imageService.ImageCloudService;
import amani.wechat.platform.webserviceClient.imageService.ImageCloudServicePortType;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

@Controller
@RequestMapping("/Staff")
public class StaffController {
    
    @Resource(name="CommonService")
    ICommonService commonService ;
    
    static ImageCloudServicePortType aImageCloudServicePortType;
    
    static{
        ImageCloudService  aImageCloudService = new ImageCloudService();
        aImageCloudServicePortType = aImageCloudService.getImageCloudServiceHttpPort();
    }
   /**
     * 更新头像和昵称
     * @param image
     * @param hm
     * @param session
     * @return
     * @throws IOException 
     */
    @RequestMapping(value = "/index/upload", method = RequestMethod.POST)
    @ResponseBody
    public Result indexUpload(@RequestParam(value = "file", required = false)MultipartFile image, String hm, HttpSession session)  {
        String imagePath = "";
        String imagebPath = "";
        Result res = new Result();
        String openid = session.getAttribute("openid")+"";
        res.setIsok(true);
        if(image!=null){
            String fileName = new Date().getTime() + "_" + image.getOriginalFilename();
            String key = fileName;
            try {
                byte[] img = CompressPic.compressPic(image.getInputStream(), 300, 300);
                imagePath = aImageCloudServicePortType.uploadFile(img, "amani", key);
                Gson gson = new Gson();
                Map<String, String> map = gson.fromJson(imagePath, new TypeToken<Map<String, String>>(){}.getType());
                imagePath = map.get("url");
            } catch (Exception e) {
                e.printStackTrace();
            } 
        }
        commonService.updateStaffInfo(openid, hm, imagePath, imagebPath);
        
        return res;
    }
 }

改成

@RequestParam(value = "file",就ok了
原文地址:https://www.cnblogs.com/sprinng/p/4903926.html