多选文件批量上传前端(ajax*formdata)+后台(Request.Files[i])---input+ajax原生上传

1.配置Web.config;设定上传文件大小

<system.web>
    <!--上传1000M限制(https://www.cnblogs.com/Joans/p/4315411.html)-->
    <httpRuntime targetFramework="4.5.2" maxRequestLength="1024000000"/>
</system.web>
+
+
+(参考博客:(https://www.cnblogs.com/Joans/p/4315411.html))
+
+
<system.webServer>
    <security>
     <requestFiltering>
       <!--上传1000M限制(https://www.cnblogs.com/Joans/p/4315411.html)-->
       <requestLimits maxAllowedContentLength="3000000000" /> 
      </requestFiltering>
    </security>
  </system.webServer>

2.前端(ajax*formdata)

<div>
    <form method="post"enctype="multipart/form-data" data-ajax="false">
        @*multiple="multiple"多选必备*@
        <input type="file" name="Files" id="Files" multiple="multiple" value="上传Files" />
        <br /><br />
        @*type="button"以后用button*@
        <input type="button" value="提交Files" onclick="uplod_Files()" />
    </form>
</div>
    <script>
        function uplod_Files() {
            var formData = new FormData();//就像cookie一样用,存入files[i];;数组形式
            var files = document.getElementById("Files").files;
            for (var i = 0; i < files.length ; i++)
            {
                formData.append("files_"+i, files[i]);
            }
            $.ajax({
                url: "/ToPdf/Get_Files",//请求地址
                dataType: "json",//数据格式
                type: "POST",//请求方式
                async: true,//是否异步请求
                cache: false,//上传文件无需缓存
                contentType: false,//必须
                processData: false,//用于对data参数进行序列化处理 这里必须false
                data: formData,
                success: function (data) {
                }
            })
        }
    </script>

3.后台(Request.Files[i]

public void Get_Files()
        {
            try
            {
                var files = Request.Files;//得到前台ajax传过来的formData;;是个数组,基本单位是文件,可以不同类型
                for (int i = 0; i < files.Count; i++)
                {
                    var file = files[i];//数组;用indexof取
                    string file_path = Server.MapPath("Picture_File_Centre");//Picture_File_Centre人为设置存放路径
                    if (!Directory.Exists(file_path))
                    {
                        Directory.CreateDirectory(file_path);
                    }
                    var file_Path_Url = Path.Combine(file_path, Path.GetFileName(file.FileName));
                    file.SaveAs(file_Path_Url);//上传后保存文件
                         //优点;实现多类型多文件上传;;;只要是东西就可以上传,,后续有要求的可以自己在后台或前台做判断
                         //缺点:file_path内覆盖性写入,即上传文件与已有文件同名同类型时会覆写
                }
            }
            catch (Exception)
            {
                throw;
            }
        }

猜你喜欢

转载自www.cnblogs.com/jsll/p/11732907.html