• MVC下Ajax上传文件


    需求:采用ajax方式上传文件到服务器

    1.前端代码

       

     <a href="javascript:void(0);" onclick="importMulitExcel()">模板导入</a>
     <input type="file" id="file" onchange="getFilePath()" style="filter:alpha(opacity=0);opacity:0; 0;height: 0;" />
    

    2.Jquery代码

     function importMulitExcel() {
                //触发 文件选择的click事件
                $("#file").trigger("click");
            }
    /* 获取文件的路径*/
            function getFilePath() {
                //alert($("#file").val());
                filePath = $("#file").val();
                if (filePath == "") {
                    alert("请选择要上传的文件!");
                    return false;
                } else {
                    UpLoadExcelFile(filePath);
                }
            }
    
            /* 上传文件并返回服务器端存储路径*/
            function UpLoadExcelFile(filePath) {
                var formData = new FormData();
                formData.append('file', $('#file')[0].files[0]);
                $.ajax({
                    url: "UpLoadExcel?path=" + filePath + "",
                    type: "POST",
                    data: formData,
                    cache: false,
                    contentType: false, //必须false才会避开jQuery对 formdata 的默认处理 XMLHttpRequest会对 formdata 进行正确的处理
                    processData: false, //必须false才会自动加上正确的Content-Type
                    dataType: "json",
                    success: function (res) {
                        if (res.success) {
                           alert('导入成功');
                        } else {
                            alert('导入失败');
                        }
                    }
                });
            }

    3.后台代码

     /// <summary>
            /// 将本地上传的文件保存到服务器
            /// </summary>
            /// <param name="FileData"></param>
            /// <returns></returns>
            public JsonResult UpLoadExcel(HttpPostedFileBase FileData)
            {
                try
                {
                    FileData = Request.Files[0];
                    // 没有文件上传,直接返回
                    if (FileData == null || string.IsNullOrEmpty(FileData.FileName) || FileData.ContentLength == 0)
                    {
                        return Json(new { Success = true, Message = "未获取到文件!" });
                    }
                    string ID = Guid.NewGuid().ToString();
                    string FileName = Request["path"].ToString();//;FileData.FileName;
                    string SaveName = string.Format("{0}{1}", ID.ToString(), Path.GetExtension(FileName));
                    //文件存储的相对路径
                    string virtualPath = string.Format("Upload/{0}/{1}/{2}/{3}",
                        DateTime.Now.Year.ToString(),
                        DateTime.Now.ToString("MM"),
                        DateTime.Now.ToString("dd"),
                        SaveName);
                    string fullFileName = this.Server.MapPath("~/" + virtualPath);
                    string path = Path.GetDirectoryName(fullFileName);
                    if (!Directory.Exists(path))
                    {
                        Directory.CreateDirectory(path);
                    }
                    if (!System.IO.File.Exists(fullFileName))
                    {
                        FileData.SaveAs(fullFileName);
                    }
    
                    return Json(new { Success = true, Filepath = virtualPath, Message = "导入成功!" });
                }
                catch (Exception ex)
                {
                    return Json(new { Success = false, Message = ex.Message });
                }
            }
  • 相关阅读:
    (二十)WebGIS中图层树功能的设计和实现
    WebGIS中矢量切图的初步研究
    百度兴趣点下载工具设计和实现
    服务端常规知识详解
    Shp数据批量导入Postgresql工具的原理和设计
    浅谈C#中一种类插件系统编写的简单方法(插件间、插件宿主间本身不需要通信)
    从底层开发谈WebGIS中实现地理长度固定的可视窗口的思路和方法
    用存储过程判断某个人员在一天的行进轨迹中是否有超过指定时间的停留
    Linux启动与禁止SSH用户及IP的登录
    JVM中的垃圾回收
  • 原文地址:https://www.cnblogs.com/ypyhy/p/7365498.html
Copyright © 2020-2023  润新知