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 上架设服务 ...
随机推荐
- 300最长上升子序列 · Longest Increasing Subsequence
[抄题]: 往上走台阶 最长上升子序列问题是在一个无序的给定序列中找到一个尽可能长的由低到高排列的子序列,这种子序列不一定是连续的或者唯一的. 样例 给出 [5,4,1,2,3],LIS 是 [1,2 ...
- 基本控件设置边角图片 drawableleft
btn.setCompoundDrawablesWithIntrinsicBounds(R.drawable.icon_galley_comment, 0, 0,0); 四个参数分别是左上右下四个方向 ...
- spring配置数据库连接池druid
连接池原理 连接池基本的思想是在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象.使用完毕后,用户也并非将连 ...
- nginx反向代理架构与安装配置(一)
这里我们准备四台虚拟机,二台负载均衡(LB01,LB02),二台web服务器(WEB01,WEB02). 这里默认所有软件都安装在/data目录下. 四台虚拟机的初始安装是centos7的最小 ...
- Golang之(if)流程控制
(if)我能坚持做好一只地鼠,慢慢的刨坑,讲洞挖的深一点…… package main import ( "fmt" ) func testIf1() { num := //var ...
- python的代码检查
#!/bin/python3.4# coding=utf-8 class lexicon(object): # direction = ['north', 'south', 'east', 'west ...
- Spring 学习记录3 ConversionService
ConversionService与Environment的关系 通过之前的学习(Spring 学习记录2 Environment),我已经Environment主要是负责解析properties和p ...
- 执行程序---system
头文件:#include<stdlib.h> 函数原型:int system(const char *command) 参数说明:command被执行的命令,字符串格式 返回值:成功则返回 ...
- delphi 数据库技术沉浮录--谨给成为历史的BDE
2014年9月,delphi xe7 出来了,这次在数据库技术方面,彻底抛掉了从1995 年 delphi 1.0 就自带的(Borland Database Engine)数据库访问技术.从而宣告了 ...
- redis只加载AOF文件
如果同时配置写AOF和RDB两种文件,但在redis启动时,只会加载AOF,除非配置只写RDB,才会加载RDB文件,也因此AOF文件必须是全量数据,所以会越来越大,这缺点也将是redis优化的一个方向 ...