Java 前端使用Ajax通过FormData传递文件和表单数据到springboot后台

Java 前端使用Ajax通过FormData传递文件和表单数据到springboot后台

前提:

页面中要引入
jquery-版本号.min.js

1.只获取页面传过来的文件

updata1.html

<form id="testform" method="post" >
    age<input type="text" id="age" name="age" />
    name<input type="text" name="name" />
    <input type="file" id="image" name="image" />
</form>
<button id="tijiao" onclick="tijiao()">提交</button>


<script>
    function tijiao(){
        var file = $("#image")[0].files[0];
        //打印file 为对象
        console.log(file);
        var formObj = new FormData();
        formObj.set('image', file);
        $.ajax({
            url:'/test/test1',
            data:formObj,
            type: 'POST',
            dataType:'json',
            processData:false,
            contentType:false,
            success:function(data){
                alert(data.Msg);
            }
        });

    }

</script>

controller代码

//只获取页面传过来的图片
    @RequestMapping("/test/test1")
    @ResponseBody
    public Map<String,Object> test3( @RequestParam("image") MultipartFile uploadFile){

2.获取页面传过来的文件和参数

updata2.html

<form id="testform" method="post" >
    age<input type="text" id="age" name="age"  />
    name<input type="text" name="name" />
    <input type="file" id="image" name="image" />
</form>
<button id="tijiao" onclick="tijiao()">提交</button>

<script>
    function tijiao() {
        var uploadFile = new FormData($("#testform")[0]);
        $.ajax({
            url: "/test/test2",
            type: "post",
            data: uploadFile,
            cache: false,
            dataType: 'json',
            contentType: false, //不设置内容类型
            processData: false, //不处理数据
            success: function (data) {
                alert(data.Msg);
            }
        });
    }
</script>

controller

//获取页面传过来的文件和参数
    @RequestMapping("/test/test2")
    @ResponseBody
    public Map<String,Object> test2(String name,@RequestParam("image") MultipartFile uploadFile){

3.获取页面传过来的文件和实体(涉及到实体就不写上去了)

updata3.html

<form id="testform" method="post" >
    age<input type="text" id="age" name="age"  />
    name<input type="text" name="name" />
    <input type="file" id="image" name="image" />
</form>
<button id="tijiao" onclick="tijiao()">提交</button>

<script>
     function tijiao(){
        var uploadFile = new FormData($("#testform")[0]);
        $.ajax({
            url:"/test/test3",
            type:"post",
            data:uploadFile,
            dataType:'json',
            contentType: false, //不设置内容类型
            processData: false, //不处理数据
            success:function(data){
                alert(data.Msg);
            }
        });

    }
</script>

controller

//获取页面传过来的文件和参数
    @RequestMapping("/test/test3")
    @ResponseBody
    public Map<String,Object> test3(User user,@RequestParam("image") MultipartFile uploadFile){

4.获取页面传过来的多个不同参数文件和实体(涉及到实体就不写上去了)

updata4.html

<form id="testform" method="post" >
    age<input type="text" id="age" name="age"  />
    name<input type="text" name="name" />
    <input type="file" id="image" name="image" />
    <input type="file" id="file" name="file" />
</form>
<button id="tijiao" onclick="tijiao()">提交</button>

<script>
     function tijiao(){
        var uploadFile = new FormData($("#testform")[0]);
        $.ajax({
            url:'/test/test4',
            data:uploadFile,
            type: 'POST',
            dataType:'json',
            processData:false,
            contentType:false,
            success:function(data){
                alert(data.Msg);
            }
        });

    }
</script>

controller

//获取页面传过来的文件和参数
    @RequestMapping("/test/test4")
    @ResponseBody
    public Map<String,Object> test4(User user,@RequestParam("image") MultipartFile uploadFile,@RequestParam("file") MultipartFile uploadFile){

5.获取页面传过来的多个同参数文件和实体(涉及到实体就不写上去了)

updata5.html

<form id="testform" method="post" >
    age<input type="text" id="age" name="age"  />
    name<input type="text" name="name" />
    <input type="file" id="image" name="image" multiple/>
    <input type="file" id="file" name="file" multiple />
</form>
<button id="tijiao" onclick="tijiao()">提交</button>

<script>
     function tijiao(){
         var uploadFile = new FormData($("#testform")[0]);
        for(var i=0; i<$('#file')[0].files.length;i++){
            uploadFile.append('images', $('#image')[0].files[i]);
        }
        for(var i=0; i<$('#file')[0].files.length;i++){
            uploadFile.append('files', $('#file')[0].files[i]);
        }
         $.ajax({
            url:'/test/test5',
            data:uploadFile,
            type: 'POST',
            dataType:'json',
            processData:false,
            contentType:false,
            success:function(data){
                alert(data.Msg);
            }
        });

    }
</script>

controller

//获取页面传过来的文件和参数
    @RequestMapping("/test/test4")
    @ResponseBody
    public Map<String,Object> test4(User user, @RequestParam("images") MultipartFile[] uploadFile,@RequestParam("files") MultipartFile[] uploadFile1){
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要接收前端FormData对象,可以使用Java Servlet API提供的HttpServletRequest对象中的getPart()方法或getParameter()方法。 如果你想要获取单个上传的文件,可以使用getPart()方法。例如: ```java Part filePart = request.getPart("file"); InputStream fileContent = filePart.getInputStream(); ``` 这里的"file"是前端FormData对象中文件上传控件的name属性值。 如果你想要获取表单中的其他数据,可以使用getParameter()方法。例如: ```java String username = request.getParameter("username"); String password = request.getParameter("password"); ``` 这里的"username"和"password"是前端FormData对象中表单控件的name属性值。需要注意的是,如果在前端FormData对象中上传了文件,那么使用getParameter()方法获取表单其他数据时会出现异常。此时,需要使用getPart()方法获取文件上传控件的Part对象,并调用Part对象的write()方法将文件写入本地磁盘,然后使用其他方法获取表单其他数据。 另外,需要注意的是,在Servlet 3.0及以上版本中,可以使用注解@MultipartConfig配置Servlet以支持文件上传。例如: ```java @MultipartConfig(location = "/tmp", fileSizeThreshold = 1024 * 1024, maxFileSize = 1024 * 1024 * 5, maxRequestSize = 1024 * 1024 * 5 * 5) public class MyServlet extends HttpServlet { // ... } ``` 这里的location属性指定文件上传的临时目录,fileSizeThreshold属性指定当上传的文件大小超过该值时,文件将被写入磁盘而不是存储在内存中,maxFileSize和maxRequestSize属性分别指定单个上传文件的最大大小和整个请求的最大大小。配置完后,在Servlet中就可以直接使用getPart()方法获取上传的文件了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值