Loading

文件上传.NET后台

引用JQuery文件

<script src="~/Scripts/jquery-3.4.1.min.js"></script>

前端页面

<input type="file" name="file"  id="fileToUpload" style="float:left" />
<input id="name" type="text" placeholder="姓名" />
<input id="age" type="number" placeholder="年龄" />
<input type="button" onclick="uploadFile()" value="保存" />

JavaScript代码

function uploadFile() {
        var file = $('#fileToUpload')[0].files[0];
        var name = $("#name").val();
        var age = $("#age").val();
        var formData = new FormData();
        formData.append("name", name);
        formData.append("age", age);
        formData.append("file", file);

        $.ajax({
            url: '/Home/UploadFile',
            dataType: 'json',
            type: 'POST',
            async: false,
            data: formData,
            processData: false, // 使数据不做处理
            contentType: false, // 不要设置Content-Type请求头
            success: function (data) {
                if (data.status) {
                    alert(data.message + "\n上传前文件名称:" + data.OName + "\n上传后文件名称:" + data.FName + "\n文件上传路径:" + data.ImgUrl);
                }
                else {
                    alert(data.message);
                }

            },
            error: function (response) {
                console.log(response);
            }
        });
    } 

后台代码

 public ActionResult UploadFile()
        {
            string name = Request.Form["name"];
            string age = Request.Form["age"];
            //文件大小限制10M
            const int maxSize = 10485760;
            //定义允许上传的文件扩展名

            var ext = new[] { "rar", "zip", "gif", "jpg", "jpeg", "png", "bmp", "xls", "xlsx", "doc", "docx", "et", "wps" };
            // 拼接后缀名
            string strExt = "";
            foreach (var a in ext)
            {
                strExt += a + "/";
            }
            strExt = strExt.TrimEnd('/');
            //文件保存路径
            string savePath = "/upLoads/";

            var resp = new { status=false,message="", ImgUrl ="", FName ="", OName ="" };
            var files = System.Web.HttpContext.Current.Request.Files;
            if (files.Count > 0)
            {
                // 文件后缀名
                string fileExt = Path.GetExtension(files[0].FileName);
                // 判断上传文件是否符合规则
                if (string.IsNullOrEmpty(fileExt) || Array.IndexOf(ext, fileExt.Substring(1).ToLower()) < 0)
                {
                    resp = new { status = false, message = string.Format("扩展名为{0}的文件不允许上传!只允许上传{1}格式的文件。", fileExt, strExt), ImgUrl = "", FName = "", OName = "" };
                }
                else
                {
                    if (files[0].InputStream.Length > maxSize)
                    {
                        resp = new { status = false, message = "上传文件大小超过限制!", ImgUrl = "", FName = "", OName = "" };
                    }
                    else
                    {
                        try
                        {
                            // 新文件名
                            string fileNewName = DateTime.Now.ToString("yyyyMMddHHmmssffff") + fileExt;
                            // 保存文件
                            SaveFile(files[0], HttpContext.Server.MapPath(savePath), fileNewName);

                            resp = new {
                                status = true,
                                message = "上传成功! 文件大小为:" + files[0].ContentLength,
                                ImgUrl = HttpContext.Server.MapPath(savePath) + fileNewName,
                                FName = fileNewName,
                                OName = files[0].FileName
                            };
                        }
                        catch (Exception ex)
                        {
                            resp = new { status = false, message = ex.ToString(), ImgUrl = "", FName = "", OName = "" };
                        }
                    }
                }
            }
            else
            {
                resp = new { status = false, message = "请选择文件!", ImgUrl = "", FName = "", OName = "" };
            }
            return Json(resp);
        }



/// <summary>
/// 保存文件
/// </summary>
/// <param name="imgFile">要保存的文件</param>
/// <param name="savePath">保存路径</param>
/// <param name="fileName">文件名称</param>
private void SaveFile(HttpPostedFile imgFile, string savePath, string fileName)
{
    if (!Directory.Exists(savePath))    //判断文件存放路径是否存在
    {
        Directory.CreateDirectory(savePath);
    }

    imgFile.SaveAs(Path.Combine(savePath, fileName));
}

执行效果

posted @ 2021-02-05 14:02  群哥V  阅读(134)  评论(0)    收藏  举报