文件类型 Extension MIME Type:
        <br />
        .doc application/msword .dot application/msword .docx
        application/vnd.openxmlformats-officedocument.wordprocessingml.document
        .dotx
        application/vnd.openxmlformats-officedocument.wordprocessingml.template
        .docm application/vnd.ms-word.document.macroEnabled.12 .dotm
        application/vnd.ms-word.template.macroEnabled.12 .xls
        application/vnd.ms-excel .xlt application/vnd.ms-excel .xla
        application/vnd.ms-excel .xlsx
        application/vnd.openxmlformats-officedocument.spreadsheetml.sheet .xltx
        application/vnd.openxmlformats-officedocument.spreadsheetml.template
        .xlsm application/vnd.ms-excel.sheet.macroEnabled.12 .xltm
        application/vnd.ms-excel.template.macroEnabled.12 .xlam
        application/vnd.ms-excel.addin.macroEnabled.12 .xlsb
        application/vnd.ms-excel.sheet.binary.macroEnabled.12 .ppt
        application/vnd.ms-powerpoint .pot application/vnd.ms-powerpoint .pps
        application/vnd.ms-powerpoint .ppa application/vnd.ms-powerpoint .pptx
        application/vnd.openxmlformats-officedocument.presentationml.presentation
        .potx
        application/vnd.openxmlformats-officedocument.presentationml.template
        .ppsx
        application/vnd.openxmlformats-officedocument.presentationml.slideshow
        .ppam application/vnd.ms-powerpoint.addin.macroEnabled.12 .pptm
        application/vnd.ms-powerpoint.presentation.macroEnabled.12 .potm
        application/vnd.ms-powerpoint.template.macroEnabled.12 .ppsm
        application/vnd.ms-powerpoint.slideshow.macroEnabled.12 .mdb
        application/vnd.ms-access
 
表单上传文件
        <form
            class="form-signin"
            action="/api/v1/pub/upload/form/uploadfile"
            method="post"
            enctype="multipart/form-data"
        >
            <p><input type="file" name="myfile" /></p>
            <p><input type="submit" value="单文件上传" /></p>
        </form>
        <br /><br />

        <form
            class="form-signin"
            action="/api/v1/pub/upload/form/MultiFile"
            method="post"
            enctype="multipart/form-data"
        >
            <!-- <p><input type="file" name="myfile" multiple/>一次选多个文件</p> -->
            <p><input type="file" name="myfile" /></p>
            <p><input type="file" name="myfile" /></p>
            <p><input type="submit" value="多文件上传" /></p>
        </form>

        <form enctype="multipart/form-data" id="ajaxForm">
            文件一:<input type="file" name="file" /><br />
            <!--    进行异步的表单提交,不会跳转页面而是刷新该页面 -->
            <!--    按钮不能是submit代表同步提交的意思,否则会刷新页面-->
            <input type="button" value="上传头像" id="btn" />
        </form>
 
异步上传文件的基本元素信息
/**
         * 上传文件的格式:
         * lastModified: 1602664687923
         * lastModifiedDate: Wed Oct 14 2020 16:38:07 GMT+0800 (中国标准时间) {}
         * name: "3d.jpg"
         * size: 70482
         * type: "image/jpeg"
         * webkitRelativePath: ""
         * [[Prototype]]: File
         *
         *
         * 获取方式一: 本元素触发onChange事件
         * const file = e.target.files[0]
         *
         * 获取方式二: click事件获取他文件元素
         * jquery方式: const file = $("#ajaxFile").get(0).files[0]  或者 $("#ajaxFile")[0].files[0]
         * 原生js方式:  const file = document.getElementById("ajaxFile").files[0]
         *
         * 多文件元素 设置属性:multiple
         * <input type="file" multiple />
         *
         * 模拟表单数据格式
         * let formData = new FormData()
         * formData.append("fileName",file)
         *
         * */
 
异步上传文件(单文件)
        <input type="file" id="ajaxFile" @change="JqueryFile($event)" />
        <input type="file" id="xmlFile" />
方式一  jquery
JqueryFile(e) {
            console.log(e.target.files[0])
            let file = $("#ajaxFile").get(0).files[0] // 这两种获取的数据相同
            // let file = $("#ajaxFile").[0].files[0]
            console.log(file)

            let fdata = new FormData()
            fdata.append("myfile", file)
            // return
            $.ajax({
                url: "/api/v1/pub/upload/file/uploadfile",
                type: "post",
                data: FormData,
                processData: false, // 告诉jQuery不要处理发送的数据
                contentType: false, // 告诉jQuery不要设置Content-Type请求头
                success: function (data) {
                    alert(data)
                    console.log(data)
                    // $("#img").attr("src", data)
                }
            })
        },
 
方式二 原生js:
        xmlFil() {
            // 获取文件上传的input元素
            const inputElement = document.getElementById("xmlFile")

            inputElement.addEventListener("change", function (e) {
                const file = e.target.files[0] // 获取文件对象
                const formData = new FormData() // 创建FormData对象用于构建表单数据
                formData.append("myfile", file) // 将文件添加到FormData对象中
                console.log(inputElement.files[0])
                console.log(file)
                // 创建Ajax请求
                const xhr = new XMLHttpRequest()
                xhr.open("POST", "/api/v1/pub/upload/file/uploadfile", true) // 设置请求方法、URL和异步
                xhr.onload = function () {
                    if (this.status === 200) {
                        console.log(this.responseText) // 上传成功后的处理逻辑
                    }
                }
                xhr.send(formData) // 发送请求
            })
        },
 
异步上传文件(多文件)
        <form class="multiple-form">
            <input type="file" multiple id="ajaxMultipleFile1" />
            <input type="submit" value="提交表单" />
        </form>
 
        xmlMultipleFile1() {
            // 假设有一个<form>元素,其中包含一个文件输入<input type="file" multiple>
            const formElement = document.querySelector(".multiple-form")
            const fileInput = formElement.querySelector(
                'input[type="file"][multiple]'
            )

            // 当表单被提交时,触发文件上传
            formElement.addEventListener("submit", function (event) {
                event.preventDefault() // 阻止表单默认行为

                const files = fileInput.files
                console.log(files)
                const url = "/api/v1/pub/upload/file/uploadfile" // 替换为你的上传API地址

                const fdata = new FormData()
                for (let i = 0; i < files.length; i++) {
                    fdata.append("myfile", files[i])
                }
                fetch(url, {
                    method: "POST",
                    body: fdata
                })
                    .then((response) => response.json())
                    .then((data) => console.log(data))
                    .catch((error) => console.error(error))
            })
        },
 
 
        <input
            type="file"
            multiple
            id="ajaxMultipleFile2"
            @change="xmlMultipleFile2($event)"
        />
xmlMultipleFile2(e) {
            const files = e.target.files
            console.log(files)
            const url = "/api/v1/pub/upload/file/uploadfile" // 替换为你的上传API地址

            const data = new FormData()
            for (let i = 0; i < files.length; i++) {
                data.append("myfile", files[i])
            }

            fetch(url, {
                method: "POST",
                body: data,
                headers: {
                    "Content-Type": "multipart/form-data"
                }
            })
                .then((response) => response.json())
                .then((data) => console.log(data))
                .catch((error) => console.error(error))
        }