layui文件下载

Layui文件下载

前台代码

       <form class="layui-form layui-col-space5">
            <div class="demoTable">
                <label>搜索:</label>
                <div class="layui-inline">
                    <select id="fileName" style="height:38px;365px;" lay-search=""></select>
                </div>
                <div class="layui-inline layui-show-xs-block" id="demoTable">
                    <button class="layui-btn" id="search" type="button">搜索</button>
                </div>
                <div class="layui-inline layui-show-xs-block" id="demoTable">
                    <button class="layui-btn" onclick="location.reload()" type="button"><i class="layui-icon layui-icon-refresh" style="line-height:30px"></i></button>
                </div>
            </div>
        </form>

JS代码
var dt = [];
$(document).ready()
{
    GetFile();
}
function GetFile() {
    $.ajax({
        url: '/File/GetFileData',
        type: 'post',
        success: function (data) {
            dt = data;

            $("#fileName").append("<option value=''>请选择</option>");
            for (var i = 0; i < data.length; i++) {
                $("#fileName").append("<option value='" + data[i].filename + "'>" + data[i].filename + "</option>");
            }
        },
        error: function () {
            alert("网络错误");
        }
    })
};
layui.use(['table'], function () {
    var table = layui.table;

    table.render({
        elem: '#file'
      , data: dt
      , cols: [[
         { field: 'filename', title: '文件名',  '80%', align: 'center' },
         { title: '操作', toolbar: '#barDemo',  '20%', align: 'center' }
      ]]
      , page: true
    });

    table.on('tool(file)', function (obj) {
        var data = obj.data;
        //console.log(obj)
        if (obj.event === 'Down') {
            //alert(data.filename);
            window.location.href = '/File/GetDataByName?filename=' + data.filename
        }
        else {
            layer.confirm('真的删除行么', function (index) {
                $.ajax({
                    url: '/File/GetDeleName',
                    type: 'post',
                    data: { filename: data.filename },
                    success: function (data) {
                        if (data.code == "0") {
                            //layer.alert("删除成功", {
                            //    icon: 6
                            //},
                            //function () {
                            //    window.location.reload();
                            //});
                            layer.msg('已删除数据!', { icon: 1, time: 1000 });
                            setTimeout('window.location.reload()', 1000);
                        }
                        else {
                            alert(data.msg);
                            window.location.reload();
                        }

                    },
                    error: function () {
                        alert("网络错误");
                    }
                })
            });
           
        }
    });

    $("#search").click(function () {
        var fileName = $("#fileName").val();
        if (fileName == '' || fileName == 'undefined') {
            var dt2 = dt;
        } else {
            var dt2 = [{ filename: fileName }];
        }
        table.render({
            elem: '#file'
              , data: dt2
              , cols: [[
                 { field: 'filename', title: '文件名',  '80%', align: 'center' },
                 { title: '操作', toolbar: '#barDemo',  '20%', align: 'center' }
              ]]
             , page: true
        });
    })
})

后台代码

    public ActionResult GetFileData()
        {
            //Uploadfile存放文件的文件夹名
            string path = Server.MapPath("~/Uploadfile");
            DirectoryInfo root = new DirectoryInfo(path);
            FileInfo[] files = root.GetFiles();
            List<FileModel> list = new List<FileModel>();
            foreach (var item in files)
            {
                FileModel m = new FileModel();
                m.filename = item.Name;
                list.Add(m);
            }
            return Json(list);
        }

        public ActionResult GetDataByName(string filename)
        {
            Dictionary<string, string> dc = new Dictionary<string, string>();
            dc.Add("exe", "application/x-msdownload");
            dc.Add("msi", "application/x-msi");
            dc.Add("apk", "application/vnd.android.package-archive");
            dc.Add("zip", "application/x-zip-compressed");
            dc.Add("rar", "application/octet-stream");
            dc.Add("btw", "application/octet-stream");
            dc.Add("dll", "application/x-msdownload");
            dc.Add("jpg", "image/jpeg");
            dc.Add("xls", "application/vnd.ms-excel");

            string path = Server.MapPath("~/Uploadfile");
            Stream sm = new FileStream(path + "\" + filename, FileMode.Open);
            if (!dc.ContainsKey(filename.Split('.')[1]))
            {
                return File(sm, "application/octet-stream", filename);
            }
            return File(sm, dc[filename.Split('.')[1]], filename);


        }

        [HttpPost]
        public ActionResult GetDeleName(string filename)
        {
            string path = "";

            path = Server.MapPath("~/Uploadfile/") + filename;
            //判断该文件是否存在
            if (System.IO.File.Exists(path))
            {
                System.IO.File.Delete(path);
                var relt = new { code = 0, msg = "删除成功" };
                return Json(relt);
            }
            else
            {
                var relt = new { code = 1, msg = "不存在该文件" };
                return Json(relt);
                //return Content(JsonConvert.SerializeObject(relt));
            }
        }

补充:HTTP Content-type常用对照表

https://tool.oschina.net/commons

原文地址:https://www.cnblogs.com/Chen-Ru/p/14174230.html