ajax提交含有input=file的form

2018-06-14  本文已影响34人  丶灰太狼他叔

直接先贴上代码:
HTML:

              <%--批量添加商品--%>
                    <form id="importModel" class="hn-form" action="" enctype="multipart/form-data">
                        <dl>
                            <dt><i>*</i>CSV文件:</dt>
                            <dd>
                                <input accept=".csv" id="csv-file" name="file" style="margin-top: 7px;" type="file">
                            </dd>
                        </dl>
                        <dl>
                            <dt><i>*</i>商品分类:</dt>
                            <dd>
                                <span id="1productType-span-1">
                                     <select class="hn-select" id="productTypeId-1" name="categoryLevel1" onchange="getNextLevelDate1(1,this.value,this.value,null,null);">
                                    <option value="" selected="selected">请选择</option>
                                    <c:forEach items="${productTypeBeanList}" var="type1">
                                        <c:choose>
                                            <c:when test="${productTypeFlag}">
                                                <option value="${type1.class1}">${type1.class1Name}</option>
                                            </c:when>
                                            <c:otherwise>
                                                <option value="${type1.productTypeId}">${type1.sortName}</option>
                                            </c:otherwise>
                                        </c:choose>
                                    </c:forEach>
                                </select>
                                </span>
                                <span id="1productType-span-2"></span>
                                <span id="1productType-span-3"></span>
                                <span>(必须选到最后一级)</span>
                            </dd>
                        </dl>
                        <dl>
                            <dt><i>*</i>店铺商品分类:</dt>
                            <dd>
                                <select class="hn-select" style="min-width: 90px" id="1shopProCategoryId"
                                        name="shopProCategoryId">
                                    <option value="">-请选择-</option>
                                    <c:forEach items="${shopProCategoryList}" var="category">
                                        <option value="${category.shopProCategoryId}">
                                                ${category.shopProCategoryName}
                                        </option>
                                    </c:forEach>
                                </select>
                            </dd>
                        </dl>
                        <dl>
                            <dt></dt>
                            <dd>
                                <a onclick="submitCsvFile();" class="hn-btn hn-info-btn" href="javascript:;">提交</a>
                            </dd>
                        </dl>
                    </form>

js:

  //form提交
        function submitCsvFile() {
            var filePath = $('#csv-file')[0].files[0],
                levelThreeVal = $("#1productType-span-3").find("option:selected").val(),
                shopGoodsCate = $("#1shopProCategoryId").find("option:selected").val();
            console.log(filePath);
            if (!$('#csv-file').val()) {
                layer.msg('请选择要添加的csv文件!');
            }else if (!levelThreeVal) {
                layer.msg('请选择三级商品分类!');
            }else if (!shopGoodsCate) {
                layer.msg('请选择店铺商品分类!');
            }else {
                var categoryLevel1 = $('#1productType-span-1').find("option:selected").val(),
                    categoryLevel2 = $('#1productType-span-2').find("option:selected").val(),
                    categoryLevel3 = $('#1productType-span-3').find("option:selected").val();
                console.log(categoryLevel1,categoryLevel2,categoryLevel3);
                console.log('文件路径===',filePath);

                var formData = new FormData();
                formData.append('filePath',filePath);
                formData.append('categoryLevel1',categoryLevel1);
                formData.append('categoryLevel2',categoryLevel2);
                formData.append('categoryLevel3',categoryLevel3);
                formData.append('shopProCategoryId',shopGoodsCate);
                console.log(formData);
                return;
                $.ajax({
                    type : 'post',
                    url : '/workflow/model/import',
                    dataType : 'json',
                    data : formData,
                    contentType: false,
                    processData: false,
                    success : function(res){
                        console.log(res);
                    }
                });
            }
        }

这是今天做项目适合碰见的问题,来做几点总结:
1、关于form的enctype="multipart/form-data"属性

2、input type=file的files属性

3、FormData对象

var FormElement = document.getElementById("myFormElement");
var new_FormData = new FormData( FormElement );  

值得注意的是,这里也需要传入的为js对象而不是Jq对象

3、利用form对象的getFormData方法生成

var formobj = document.getElementById("myFormElement");
var formdata = formobj.getFormData();
上一篇 下一篇

猜你喜欢

热点阅读