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

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

<a href="javascript:void(0);" onclick="DownEntFiles(fileId,fileName)">下载</a>

(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<string> list =GetExcelFile(fileID, FunGuid);
if (list.Count > )
{
return list[];
}
else
{
return "";
}
}
catch (Exception ex)
{
return "";
}
}
#endregion

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

#region 获取文件的路径以及后缀名
/// <summary>
/// 获取文件的路径以及后缀名
/// </summary>
/// <param name="fileName">文件名</param>
/// <returns></returns>
public List<string> GetExcelFile(string fileName,string FunGuid)
{
List<string> list = new List<string>();
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 = ; i < files.Length; i++)
{
if (files[i].Name==fileName)
{
list.Add(files[i].FullName);//添加相对路径
}
}
return list;
}
catch (Exception ex)
{
return list;
}
}
#endregion

(3)下载文件

 #region 下载文件
/// <summary>
/// 下载文件
/// </summary>
/// <param name="filePath">文件完整路径</param>
/// <param name="fileName">文件名</param>
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

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

<a href='../PhoneNum/DownloadFiles?filePath=" + filePath + "&fileName=" + fileName + "'>下载</a>
/*filePath:文件路径
fileName:文件名称
*/

后台处理方法:

#region 下载excel文件
/// <summary>
/// 下载excel文件
/// </summary>
/// <param name="filePath">文件路径</param>
/// <param name="fileName">文件名</param>
/// <returns></returns>
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等会保存

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

ligerUI利用a标签下载文件的更多相关文章

  1. 利用隐藏 iframe 下载文件

    在开发项目中遇到问题:下载文件后台报错,下载文件的页面会出现空白或异常信息,需要解决. 解决方法:利用隐藏iframe下载文件 3:对于a标签,采用target属性方法 <a target=&q ...

  2. 使用a标签下载文件,而不是直接打开,使用属性 download

    有的时候,下载的链接文件如果是普通文件类型,如txt,我们下载文件的时候,有的浏览器不会弹出下载框,.而是直接打开了该文件. 针对这种情况,我们只需要在a标签上加上download属性即可显示下载框. ...

  3. 应用HTML5 标签下载文件

    使用HTML5 <a>标签可以直接下载文件而不用通过后台action. <a href="/uploadfolder/xxxx.txt">点击下载</ ...

  4. axios 利用new FileReader() 下载文件获取返回的错误信息

    this.axios({           method: "post",           url: url,           data: data,           ...

  5. web页面中a标签下载文件包含中文下载失败的解决

    之前用到的文件下载,文件名都是时间戳的形式或者英文名.下载没有问题.后来附件有中文后写在页面是下面效果,点击下载,下载失败. 对应链接拿出来.是如下效果 之前用了各种其他办法都不理想,比如转义什么的. ...

  6. C#利用WebService接口下载文件

    WebTest.RtTfSimDataInterface test = new WebTest.RtTfSimDataInterface(); //string strBasic = test.Get ...

  7. 利用goole guava 下载文件到本地

    package com.road.crawler.meizitu.crawler; import java.io.File; import java.io.IOException; import ja ...

  8. Android利用Http下载文件

    Android利用Http下载文件 一.场景 下载存文本文件和下载如mp3等大容量的文件 界面 二.代码编写 1.AndroidMainfest.xml中配置 主要是解决网络权限和写SDCard的权限 ...

  9. Appengine直接下载文件并保存到google drive

    一直对下载文件比较感兴趣.前些日子无意搜到google 推出一项服务,可以直接将文件下载到google drive中,原型猛戳这里,但有限额限制.一时脑洞大开,可不可以在appengine 上架设服务 ...

随机推荐

  1. VMware安装Windows注意

    安装Windows通用步骤,分区,重建分区表,重写MBR引导.安装即可. VMware安装Windows 如果进不了CM/ROM,在.vmx文件里: 加入一行:bios.forceSetupOnce ...

  2. JAVA知识积累 JSP第一篇【JSP介绍、工作原理、生命周期、语法、指令、行为】

    什么是JSP JSP全名为Java Server Pages,java服务器页面.JSP是一种基于文本的程序,其特点就是HTML和Java代码共同存在! 为什么需要JSP JSP是为了简化Servle ...

  3. LayDate 时间选择插件的使用介绍 (低版本1.0好像是)

    <span style="font-size:18px;"><!doctype html> <html> <head> <me ...

  4. 练习并熟练掌握交互式 SQL 语言

    哈工大数据库系统 实验:练习并熟练掌握交互式 SQL 语言   实验目的:基于给定的 OrderDB 数据库, 练习并熟练掌握交互式 SQL 语言实验环境:sql sever 2008 附:Order ...

  5. 用Fiddler抓到的报文Content-Type: application/x-www-form-urlencoded,怎样解析?

    抓到的HTTPS请求报文,在报文头中Content-Type: application/x-www-form-urlencoded 报文体为: entrypoint=clientmanagement& ...

  6. easyui datagrid 分页 客户分页

    1.写好json 数据 {                                                              "total":21,     ...

  7. js技巧汇总

    1.window.open()打开一个子页面,在子页面关闭时刷新父页面 子页面关闭事件代码:window.opener.location.href=window.opener.location.hre ...

  8. part1:3-VMware及redhat enterprise Linux 6 的安装

    创建虚拟机PC FILE->NEW Virtual machine->custom(自定义,定制)->...->I WILL INSTALL THE OS LATER-> ...

  9. 2018.10.16 spoj Can you answer these queries V(线段树)

    传送门 线段树经典题. 就是让你求左端点在[l1,r1][l1,r1][l1,r1]之间,右端点在[l2,r2][l2,r2][l2,r2]之间且满足l1≤l2,r1≤r2l1\le l2,r1 \l ...

  10. 2018.10.01 bzoj3237: [Ahoi2013]连通图(cdq分治+并查集)

    传送门 cdq分治好题. 对于一条边,如果加上它刚好连通的话,那么删掉它会有两个大集合A,B.于是我们先将B中禁用的边连上,把A中禁用的边禁用,再递归处理A:然后把A中禁用的边连上,把B中禁用的边禁用 ...