• 基于mvc三层架构和ajax技术实现最简单的文件上传


    前台页面提交文件

    <!DOCTYPE html>

    <html>
    <head>
    <meta name="viewport" content="width=device-width" />
    <title>文件操作</title>
    </head>
    <body>
    <form id="upFileForm">
    <div style="margin:30px;">
    <span style="margin-right:10px;">上传文件</span><input type="file" name="UpFile" id="UpFile" style="12%;" />
    <input type="button" onclick="upFile()" value="确认上传" />
    </div>
    </form>

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

    <script>

    //上传文件
    function upFile() {
    var file = document.getElementById("UpFile").files[0];
    if (!file) {
    alert("请选择文件!");
    return;
    }
    var size = file.size / 1024 / 1024;
    if (size > 50) {
    alert("图片文件不能大于50M");
    return;
    }
    $("#upFileForm").ajaxSubmit({
    url: "/File/UploadFile",
    type: "post",
    dataType: "json",
    success: function (data) {
    if (data == "" || data == "0") {
    alert("上传失败");
    }
    if (data == "2") {
    alert("不支持上传该文件");
    } else {
    alert(JSON.stringify(data));
    }
    },
    error: function (aa) {
    alert(aa);
    }
    });
    }
    </script>

    </body>
    </html>

    后台接收和上传

    [HttpPost]
    public JsonResult UploadFile()
    {
    HttpRequest request = System.Web.HttpContext.Current.Request;
    HttpFileCollection FileCollect = request.Files;
    string path = "";//文件的完整路径
    //文件保存目录路径
    string imgPathName = DateTime.Now.ToString("yyyyMMdd");//以日期为文件存放的上层文件夹名
    string savePath = "/upload/file/" + imgPathName + "/";//文件存放的完整路径
    //如果文件路径不存在则创建文件夹
    if (!Directory.Exists(Server.MapPath(savePath)))
    {
    Directory.CreateDirectory(Server.MapPath(savePath));
    }
    //定义允许上传的文件扩展名
    Hashtable extTable = new Hashtable();
    extTable.Add("file", "doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2");

    if (FileCollect.Count > 0)//如果集合的数量大于0,多文件上传情况
    {
    foreach (string str in FileCollect)
    {
    HttpPostedFile imgFile = FileCollect[str];//用key获取单个文件对象HttpPostedFile
    string fileName = imgFile.FileName;//获取文件名
    string fileExt = Path.GetExtension(fileName).ToLower();//获取文件后缀名
    //判断文件类型是否正确
    if (Array.IndexOf(((string)extTable["file"]).Split(','), fileExt.Substring(1).ToLower()) == -1)
    {
    //文件类型不正确
    return Json("2");
    }
    string imgName = DateTime.Now.ToString("yyyyMMddhhmmss");//文件别名
    string imgPath = savePath + imgName + "-" + imgFile.FileName;//构造文件保存路径
    string AbsolutePath = Server.MapPath(imgPath);
    imgFile.SaveAs(AbsolutePath);//将上传的东西保存
    path = imgPath;//获得文件完整路径并返回到前台页面
    }
    return Json(path);
    }
    else
    {
    //上传失败
    return Json("0");
    }
    }

  • 相关阅读:
    c/c++ 数组的智能指针 使用
    c/c++ 智能指针 weak_ptr 使用
    在ubuntu18.04上安装EOS
    c/c++ 智能指针 unique_ptr 使用
    python基础-内置装饰器classmethod和staticmethod
    java中5种异步转同步方法
    java自定义注解
    多线程之线程池(Thread,Runnable,callable,Future,FutureTask)
    java反射
    重写ThreadFactory方法和拒绝策略
  • 原文地址:https://www.cnblogs.com/zcb-blog/p/9111680.html
Copyright © 2020-2023  润新知