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