java web前端上传文件到后台常用的几种方式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_38111957/article/details/80864883

一引言

    小编目前工作内容属于和第三方做接口对接,突然调换到开发产品组,需要做一个拍照上传身份证照片到后台识别的功能。一个很简单的功能,当我做到需要上传图片到后台的时候,突然感觉对上传文件的思路很乱,不知该使用什么方式来实现。所以今天小编我来总结上传文件的几种方式,屡屡自己的思路。   

二常用的几种方式

    1、使用form表单提交    

        这种方式是最简单明了的,直接用表单提交。记得添加enctype属性哟,这个属性是指定form表单在向服务器提交之前,对表单数据如何进行编码。 文件域中的name="file"属性的值,需要和后台接收的对象名一致,不然接收不到的。

<form action="/api/fileupload/dome1" id="domeform" method="post" enctype="multipart/form-data">
    <input type="file" name="file" value="选择文件">
    <input type="submit" value="表单提交">
    <input type="button" value="ajax提交" id="ajaxsub">
    <input type="button" value="formdata提交" id="ormdatasub">
</form>

    2、使用ajax提交文件

        在项目当中难免避免异步提交文件,或者是需要局部刷新,这个时候我们就需要使用到ajax来实现。

        使用ajax提交首先引入jquery-form.js文件才能实现,接着使用上面的html代码,加入以js则可以实现ajax提交文件        

<script type="text/javascript">
    $(function(){
       $("#ajaxsub").click(function(){
            $("#domeform").ajaxSubmit({
                url: "/api/fileupload/dome1",
                type: "POST",
                dataType: "json",
                success: function (res) {
                    //处理成功后的业务逻辑
                }
            })
        })
    })
</script>

    3、使用FormData对象

       如果不想引入其他js文件,那就使用这种方式吧,也是通过ajax的形式上传。

/**
 * 使用FormData
 */
$("#ormdatasub").click(function(){
    var formdata = new FormData($("#domeform")[0]);
    $.ajax({
        url: "/api/fileupload/dome1",
        type: "POST",
        data:formdata,
        dataType: "json",
        processData: false,  // 告诉jQuery不要去处理发送的数据
        contentType: false,   // 告诉jQuery不要去设置Content-Type请求头
        success: function (res) {
        }
    })
}) 

    4、后台接收文件,框架采用的Spring Boot 微服务框架,因为该框架搭建很方便所以采用这个框架写例子。

package com.example.demo;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;

@Controller
@RequestMapping(value = "/api/fileupload")
public class FileuploadController {


    /**
     * 用于接收前端上传文件
     * @param request
     * @param file
     */
    @RequestMapping(value = "dome1", method = RequestMethod.POST)
    public void dome1(HttpServletRequest request, MultipartFile file) throws Exception{
        //file对象名记得和前端name属性值一致
        System.out.println(file.getOriginalFilename());
    }
}

有需要整个dome的点击这里进行下载,后期遇到常用的上传文件的方式,也会即使更新。

猜你喜欢

转载自blog.csdn.net/weixin_38111957/article/details/80864883