博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ligerUI利用a标签下载文件
阅读量:4984 次
发布时间:2019-06-12

本文共 4334 字,大约阅读时间需要 14 分钟。

一、利用WriteFile实现下载,并验证文件是否存在,将指定的文件直接写入HTTP响应输出流。注意:大型文件使用此方法可能导致异常。可以使用此方法的文件大小取决于 Web 服务器的硬件配置、

(1)为a标签添加onclick事件,其中fileId为文件guid编号,fileName为文件名称

(2)下载文件完整目录的方法

//下载接收文件//fileId:文件id//fileName:文件名称function DownEntFiles(fileId, fileName) {    $.ajax({        type: 'post',        url: '../HGSWXTManagement/isDeleteFiles',//后台处理的地址,用于判断该文件是否存在        data: "{fileID:'" + fileId + "'}",        async: false,        contentType: 'application/json;charset=utf-8',        success: function (data) {            if (data == "") {                $.ligerDialog.warn("该文件已删除,无法下载");            }            else {                location.href = '../InfoStatistics/DownloadFiles?filePath=' + data + '&fileName=' + fileName + '';            }        }    })}

判断文件是否存在,如果存在,返回完整的文件路径

#region 判断该文件是否已经删除,如果存在返回文件的完整路径        public string isDeleteFiles(string fileID)        {            try            {                //判断文件夹下是否存在这个文件                List
list =GetExcelFile(fileID, FunGuid); if (list.Count > 0) { return list[0]; } else { return ""; } } catch (Exception ex) { return ""; } } #endregion

获取指定文件夹下存在的该文件的完整路径

#region 获取文件的路径以及后缀名        ///         /// 获取文件的路径以及后缀名        ///         /// 文件名        /// 
public List
GetExcelFile(string fileName,string FunGuid) { List
list = new List
(); try { //获取web.config中配置的文件路径 string filePath = System.Configuration.ConfigurationManager.AppSettings["UcRecv"].ToString(); //设置要获取的文件路径 //string path = HttpRuntime.AppDomainAppPath.ToString() + uploadFiles + "\\"; DirectoryInfo root = new DirectoryInfo(filePath); FileInfo[] files = root.GetFiles(); //将文件夹下面的文件全部读取出来,并添加到list中 for (var i = 0; i < files.Length; i++) { if (files[i].Name==fileName) { list.Add(files[i].FullName);//添加相对路径 } } return list; } catch (Exception ex) { return list; } } #endregion

(3)下载文件

#region 下载文件        ///         /// 下载文件        ///         /// 文件完整路径        /// 文件名             public void DownloadFiles(string filePath, string fileName)        {            try            {                FileInfo fi = new FileInfo(filePath);                Response.Clear();                Response.ClearHeaders();                Response.Buffer = false;                //Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName);                 //必须设置文件名称格式,否则在ie中会成乱码                Response.AddHeader("Content-Disposition", string.Format("attachment;filename*=utf-8''{0}", HttpUtility.UrlPathEncode(fileName)));                Response.AppendHeader("Content-Length", fi.Length.ToString());                Response.HeaderEncoding = System.Text.Encoding.UTF8;                Response.ContentEncoding = System.Text.Encoding.UTF8;                Response.ContentType = "application/octet-stream";                Response.WriteFile(filePath);                Response.Flush();                Response.End();            }            catch (Exception ex)            {                throw ex;            }        }        #endregion

二、流方式下载,(这里不对文件是否存在进行验证,如果验证,可以参考上面的方法

 

下载 /*filePath:文件路径   fileName:文件名称 */

 

后台处理方法:

#region 下载excel文件        ///         /// 下载excel文件        ///         /// 文件路径        /// 文件名        /// 
public FileStreamResult DownloadFiles(string filePath, string fileName) { //获取文件的路径 string localPath = Server.MapPath(filePath); return File(new FileStream(localPath, FileMode.Open), "text/plain", fileName); } #endregion

 

 

这样编写之后,文件能正常下载,图片,视频会直接打开,excel、txt、ppt等会保存

学习积累,如有问题,请留言,不胜感激,谢谢

转载于:https://www.cnblogs.com/sas1231/p/10476757.html

你可能感兴趣的文章
A. Bus to Udayland
查看>>
Python 基础篇:字典、集合、文件操作
查看>>
Jmail发送邮件与带附件乱码解决办法
查看>>
分治法求一个N个元素数组的逆序数
查看>>
P4149 [IOI2011]Race
查看>>
SimpleDateFormat函数语法
查看>>
140705
查看>>
HDOJ 1427(dfs) 速算24点
查看>>
Day-08 文件操作
查看>>
个人使用angular的一些小总结
查看>>
webservice wsdl axis2报错 Provider com.bea.xml.stream.MXParserFactory not found
查看>>
EOS1.1版本新特性介绍
查看>>
929. Unique Email Addresses
查看>>
3.常见的ORM框架
查看>>
Hdu 1326 Box of Bricks
查看>>
常用数据结构算法 : 堆排序
查看>>
Highcharts X轴名称太长,如何设置下面这种样式
查看>>
使用模板类,创建树。使用头文件分离模板类的申明与实现时出错
查看>>
王者的世界:全球十大对冲基金公司传奇
查看>>
Lua相关图书推荐
查看>>