SpringMVC 之 CommonsMultipartFile ————上传图片

1.基础配置,请看https://blog.csdn.net/Sun6Zero/article/details/81319831篇文章

2.直接上代码,前端

<div>
    <input id="name" type="text" />
    </br>
    <input id="pwd" type="text" />
    </br>
    <input id="age" type="text" />
    </br>
    <input type="file" name="file" id="file-img"/>
    <br>
    <input type="submit" id="submit" value="提交" />
</div>
<script>
    $(function () {
        $("#submit").click(function () {
            var name=$("#name").val();
            var pwd=$("#pwd").val();
            var age=$("#age").val();
            // 生成一个ssm对象
            var ssm={};
            ssm.name=name;
            ssm.pwd=pwd;
            ssm.age=age;
            // 获取上传的图片文件流  [0].files ssss,注意
            var fileImg=$("#file-img")[0].files[0];
            // 生成表单对象,用于接收参数并传递给后台
            var formData = new FormData();
            //转换成为一个 Json的字符串
            formData.append("ssm",JSON.stringify(ssm));
            formData.append("fileImg",fileImg);
            console.log(formData.get("ssm"));
            $.ajax({
                url : "/tijiao",
                type : 'POST',
                data : formData,
                contentType : false,
                processData : false,
                cache : false,
                success : function(data) {
                    alert("chenggong!");
                    if (data.success) {
                        $.toast('提交成功!');
                    }
                }
            });
        })
    })


</script>

3.后端,处理

package com.sun.controller;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.sun.beans.Person;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;

import javax.servlet.http.HttpServletRequest;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

/**
 * create by Sun
 * 2018/8/6
 */
@Controller
public class photoUpload2 {

    @RequestMapping(value = "/tijiao",method = RequestMethod.POST)
    @ResponseBody
    public Map<String,Object> submit(HttpServletRequest request){
        Map<String,Object> map=new HashMap<>();
        String str=request.getParameter("ssm");
        /**
         *         CommonsMultipartFile fileImg=null;
         * Maven: org.springframework:spring-web:4.3.7.RELEASE] org.springframework.web.multipart.commons public class CommonsMultipartFile extends Object implements MultipartFile, Serializable
         */

        /**
         * 看一下他的构造函数
         * CommonsMultipartResolver 的构造方法传入的是servletContext()
         */
        CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(
                request.getSession().getServletContext());
        CommonsMultipartFile fileImg=null;
        if(commonsMultipartResolver.isMultipart(request)){
            /**
             * 转成能够获取流的 MultipartHttpServletRequest的 请求
             */
            MultipartHttpServletRequest multipartHttpServletRequest=(MultipartHttpServletRequest)request;
            fileImg= (CommonsMultipartFile) multipartHttpServletRequest.getFile("fileImg");
        }
        try {
            InputStream fileImgInputStream = fileImg.getInputStream();
            File dest=new File("E:/test1/");
            if(!dest.exists()){
                dest.mkdirs();
            }
            File dest1=new File(dest,""+ UUID.randomUUID().toString()+fileImg.getOriginalFilename().substring(fileImg.getOriginalFilename().lastIndexOf(".")));
            byte[] bytes=new byte[1024];
            int len=-2;
            OutputStream fileOutputStream=new FileOutputStream(dest1);
            while ((len=fileImgInputStream.read(bytes))!=-1){
                fileOutputStream.write(bytes,0,len);
            }
         } catch (IOException e) {
            e.printStackTrace();
        }finally {

        }


        System.out.println(fileImg.getOriginalFilename()+"  "+"fileImg");

        System.out.println(str+"xxxxxxxxxx");
        ObjectMapper mapper=new ObjectMapper();
        try {
            //Json数据转换为 一个对象
            Person person1 =(Person) mapper.readValue(str, Person.class);
            System.out.println(person1);

        } catch (IOException e) {

            System.out.println("失败");
            e.printStackTrace();
        }
        map.put("test","ok");
        return map;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值