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 上架设服务 ...
随机推荐
- python作业之用户管理程序
数据库的格式化如下 分别为姓名|密码|电话号码|邮箱|用户类型 admin|admin123.|28812341026|admin@126.com|1root|admin123.|1344566348 ...
- IBM MQ 学习
import java.io.IOException; import java.util.HashMap; import java.util.Map; import com.ibm.mq.MQC; i ...
- [SoapUI] Command-Line Arguments
https://support.smartbear.com/readyapi/docs/soapui/running/automating/cli.html Use the test runner t ...
- ejb 和pojo , jboss 和 tomcat
EJB(企业JavaBeans)是普通JavaBeans的一种提升和规范,因为企业信息系统开发中需要一个可伸缩的性能和事务.安全机制,这样能保证企业系统平滑发展,而不是发展到一种规模重新更换一套软件系 ...
- IT 技术网站收集
## 脚本之家 http://www.jb51.net/ ## 菜鸟教程 http://www.runoob.com/ ## 编程中国 https://www.bccn.net/ ##
- 为什么c++中返回成员变量的指针,会破坏了封装?
上述代码中,get()函数返回的是类成员变量的name的地址,这是很危险的,name是私有的,意味这不想被客户访问,但是如果返回name的地址,那么外部函数就可以修改name,这就破坏了封装性. 为什 ...
- 在使用html5的video标签播放视频时为何只有声音却没有图像
在使用html5的video标签播放视频时为何只有声音却没有图像? 答:使用格式化工厂转个编码就行了,MP4有3种编码,mpg4(xdiv),,mpg4(xvid),avc(h264)转换成H264编 ...
- 2018.09.15 秘密的牛奶管道SECRET(次小生成树)
描述 约翰叔叔希望能够廉价连接他的供水系统,但是他不希望他的竞争对手知道他选择的路线.一般这样的问题需要选择最便宜的方式,所以他决定避免这种情况而采用第二便宜的方式. 现在有W(3 <= W & ...
- python面向对象-3类的静态方法和类方法
还是以上次的洗衣机例子: class Washer: company='ZBL' def __init__(self,water=10,scour=2): self._water=water #不想让 ...
- generate
一:generate Verilog-2001添加了generate循环,允许产生module和primitive的多个实例化,同时也可以产生多个variable,net,task,function, ...