带参数的文件上传方法&后台接收

1,html代码

利用input的multiple属性来上传多个文件,需要注意的是选择文件时,需要一次性选择多个文件,一次一次选择是达不到多文件上传的效果。

复制代码

<script src="~/Scripts/jquery-3.1.1.min.js"></script>
<link href="~/Content/Semantic-UI-CSS/semantic.min.css" rel="stylesheet" />
<script src="~/Content/Semantic-UI-CSS/semantic.min.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<div class="container">
    <input type="file" multiple hidden id="files" />
    <br />
    <button class="ui violet button" id="add">添加文件 </button>
    <button class="ui primary button" id="upload">上传 </button>
    <button class="ui button" id="reset">重置 </button>
    <div class="ui ordered list"></div>
</div>
<script type="text/javascript">
  //添加文件
    $("#add").click(function () {
        $("#files").click();
    });
  //重置文件选择
    $("#reset").click(function () {
        $("#files").val('');
        $("div.list").html('');
    });
  //上传
    $("#upload").click(function () {
        let form = new FormData();
        let files = $("#files").get(0).files;
        if ($("#files").val() != "") {
            for (let i = 0; i < files.length; i++) {
                form.append("file["+i+"]",files[i]);
            }
            form.append("p1", "杨家有女初长成");
            form.append("p2", "养在深闺人未识");
            axios.post('/test/uploadfile', form)
                .then(function (response) {
                    console.log(response.data)
                 })
                .catch(function (error) {
                    console.log(error)
                });
        }
    });
  //显示选择的文件
    $("#files").change(function () {        
        let files = $("#files").get(0).files;
        let item = "";
        for (let i = 0; i < files.length; i++) {
            item += "<div class=\"item\">" + files[i].name + "</div>";
        }
        $("div.list").html(item);
    });
</script>
<style type="text/css">
    .container {
        margin-left: 1em;
    }
</style>

复制代码

 

效果图:

2,后台接收

复制代码

[HttpPost]
 public ActionResult UploadFile()
 {
     HttpRequest request = System.Web.HttpContext.Current.Request;
     string parameter1 = request.Params.Get("p1");
     string parameter2 = request.Params.Get("p2");
     StringBuilder builder = new StringBuilder();
     if (request.Files.Count > 0)
     {
        try
        {
            foreach (string file in request.Files)
            {
               var postedFile = request.Files[file];
               var filePath = System.Web.HttpContext.Current.Server.MapPath("~/Files/");
               if (!Directory.Exists(filePath))
               {
                   Directory.CreateDirectory(filePath);
                }
                postedFile.SaveAs(filePath + postedFile.FileName);
              }
              builder.Append("参数1:" + parameter1 + ", 参数2:" + parameter2);
         }
         catch (Exception ex)
         {
             builder.Append("error:" + ex.Message);
         }
    }
    return Json(builder.ToString());
}

复制代码

 最终效果图:

 3,上传文件大小限制解决办法

默认上传文件大小不能超过4MB,超出会上传失败。

解决方法也很简单,在webconfigsystem.web节点添加如下代码

<httpRuntime targetFramework="4.5" maxRequestLength="10240" />

这里设置最大长度为10M,根据自己的需求修改maxRequestLength的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值