ligerUI利用a标签下载文件
一、利用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标签下载文件的更多相关文章
- 利用隐藏 iframe 下载文件
在开发项目中遇到问题:下载文件后台报错,下载文件的页面会出现空白或异常信息,需要解决. 解决方法:利用隐藏iframe下载文件 3:对于a标签,采用target属性方法 <a target=&q ...
- 使用a标签下载文件,而不是直接打开,使用属性 download
有的时候,下载的链接文件如果是普通文件类型,如txt,我们下载文件的时候,有的浏览器不会弹出下载框,.而是直接打开了该文件. 针对这种情况,我们只需要在a标签上加上download属性即可显示下载框. ...
- 应用HTML5 标签下载文件
使用HTML5 <a>标签可以直接下载文件而不用通过后台action. <a href="/uploadfolder/xxxx.txt">点击下载</ ...
- axios 利用new FileReader() 下载文件获取返回的错误信息
this.axios({ method: "post", url: url, data: data, ...
- web页面中a标签下载文件包含中文下载失败的解决
之前用到的文件下载,文件名都是时间戳的形式或者英文名.下载没有问题.后来附件有中文后写在页面是下面效果,点击下载,下载失败. 对应链接拿出来.是如下效果 之前用了各种其他办法都不理想,比如转义什么的. ...
- C#利用WebService接口下载文件
WebTest.RtTfSimDataInterface test = new WebTest.RtTfSimDataInterface(); //string strBasic = test.Get ...
- 利用goole guava 下载文件到本地
package com.road.crawler.meizitu.crawler; import java.io.File; import java.io.IOException; import ja ...
- Android利用Http下载文件
Android利用Http下载文件 一.场景 下载存文本文件和下载如mp3等大容量的文件 界面 二.代码编写 1.AndroidMainfest.xml中配置 主要是解决网络权限和写SDCard的权限 ...
- Appengine直接下载文件并保存到google drive
一直对下载文件比较感兴趣.前些日子无意搜到google 推出一项服务,可以直接将文件下载到google drive中,原型猛戳这里,但有限额限制.一时脑洞大开,可不可以在appengine 上架设服务 ...
随机推荐
- CentOS 7安装zabbix步骤
Zabbix配置安装 1.前期准备: 我自己的基础环境:CentOS 7 + Mysql 5.6 可以根据官网介绍一步一步安装,官网地址:https://www.zabbix.com/ 图1: 然后点 ...
- OpenSSL 结构体
X509_STORE 头文件:x509_vfy.h 定义 typedef struct x509_store_st X509_STORE; struct x509_store_st { /* The ...
- redis缓存设置和读取
一/写入 <?php $redis = new Redis(); //实例化redis $redis->pconnect('); $redis->,'huahua'); //设置变量 ...
- Laravel 5 如何对部份 URI 禁用 CSRF 验证
打开中间件 VerifyCsrfToken.php 在其 $except 属性中添加要禁用的 uri,如: api/user/add api/user/* api/*
- Winpython环境下mayavi配置
Winpython环境下mayavi配置 在pythonxy中会直接有mayavi软件包,但是所附带的杂包实在太多.本人一直用的是window下的winpython或者linux下的anaconda来 ...
- ubuntu系统下安装pyspider:安装命令集合。
本篇内容的前提是你已安装好python 3.5.在ubuntu系统中安装pyspider最大的困难是要依赖组件经常出错,特别是pycurl,但把对应的依赖组件安装好,简单了.下面直接上代码,所有的依赖 ...
- redis学习-事务命令
multi:开启事务 exec:提交事务 discard:取消事务 1.开启事务之后,每次执行命令之后,都要先进入事务队列中,只有在执行 exec之后才开始执行 2.开启事务之后,每次执行命令之后,都 ...
- c#中关于变量声明那么点事
class MyVar { /* * 基于安全的考虑,c#变量的初始化有一定的要求 * 1.所有的局部变量在被显示的初始化之前,都会被编译器当作未初始化,然后抛出编译期出错; * 2.所有的字段级变量 ...
- GoogleStyle格式化代码
<div class="iteye-blog-content-contain" style="font-size: 14px"></div&g ...
- 20155226 2016-2017-2 《Java程序设计》第7周学习总结
20155226 2016-2017-2 <Java程序设计>第7周学习总结 教材学习内容总结 认识时间与日期 六个时间基准: 1.格林威治标准时间 2.世界时 3.国际原子时 4.世界协 ...