.Net MVC 下载网站的文件
前言
上传文件我使用的是Bootstrap的插件FileInput,这个抽时间看看写个博客
现在下载我遇到坑了,而这个坑,我以前踩过.....
C#文件的下载
网上一搜,大把,下面的代码也是我复制网上的,怎么都不行
FileInfo fileInfo = new FileInfo("C:\\Users\\Justin\\Desktop\\学习\\20190528102940089.pdf");
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader("Content-Disposition", "attachment;filename=" + "20190528102940089.pdf");
Response.AddHeader("Content-Length", fileInfo.Length.ToString());
Response.AddHeader("Content-Transfer-Encoding", "binary");
Response.ContentType = "application/octet-stream";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
Response.WriteFile(fileInfo.FullName);
Response.Flush();
Response.End();
然后我新建了个项目,把上面的代码复制进去,行了.....
我对比了一下我的项目,我居然又犯了以前踩过的一个坑,我不知道ajax不能请求下载方法!!!
ajax
ajax的返回值类型是json,text,html,xml类型,所以ajax请求的方法返回的基本上都是json格式,然而我访问的是下载方法,返回的是文件流......
返回文件路径,使用window.open打开
改版思路,使用ajax获取文件的路径,然后使用window.open打开,这里又遇到一个问题,window.open不能打开本地路径,比如D盘下的某个文件,因为js是拒绝访问磁盘的,那就换成网站路径咯
var curWwwPath = window.document.location.href;
var pathName = window.document.location.pathname;
var pos = curWwwPath.indexOf(pathName);
var localhostPaht = curWwwPath.substring(0, pos);
//这个localhostPaht就是你的网站的网址
//然后在ajax的success方法里面直接打开
window.open(localhostPaht + data.ReturnData.filePath);
这里的ReturnData就是一个json返回类,可以携带一些Model类,如下
using System;
using System.Collections.Generic;
using System.Text;
namespace test.Model
{
public enum ReturnStatus
{
FAILED=0,
SUCCEED =1,
WARNNING=2
}
/// <summary>
/// 返回信息提示
/// </summary>
public class ReturnValue
{
public ReturnValue() { }
public ReturnValue(ReturnStatus status, object returnData, string message)
{
Status = status;
ReturnData = returnData;
Message = message;
}
public ReturnValue(ReturnStatus status, string message)
{
Status = status;
Message = message;
}
/// <summary>
/// 默认失败
/// </summary>
/// <param name="result"></param>
public ReturnValue(string message)
{
Status = ReturnStatus.FAILED;
Message = message;
}
/// <summary>
/// 状态
/// </summary>
public ReturnStatus Status { get; set; }
/// <summary>
/// 数据对象
/// </summary>
public object ReturnData { get; set; }
/// <summary>
/// 接口访问错误的时候返回的错误提示文字,访问成功的时候为空字符串
/// </summary>
public string Message { get; set; } = "";
}
}
Controller返回也很简单
return Json(new ReturnValue(ReturnStatus.SUCCEED, new { filePath= filePath }, "下载成功"), JsonRequestBehavior.AllowGet);
.Net MVC 下载网站的文件的更多相关文章
- Linux Shell 下载网站指定文件
Shell脚本,用来从网站下载指定文件名的文件.先判断本地这个文件是否存在,如果存在则忽略,不存在则从远程服务器上下载,下载成功后本地的批次号累加1,然后使用新的批次号继续下载新文件. #!/bin/ ...
- Spring MVC -- 下载文件
像图片或者HTML文件这样的静态资源,在浏览器中打开正确的URL即可下载,只要该资源是放在应用程序的目录下,或者放在应用程序目录的子目录下,而不是放在WEB-INF下,tomcat服务器就会将该资源发 ...
- [No00006B]方便的网络下载工具wget 可下载网站目录下的所有文件(可下载整个网站)
wget是linux下命令行的下载工具,功能很强大,它能完成某些下载软件所不能做的,比如如果你想下载一个网页目录下的所有文件,如何做呢?网络用户有时候会遇到需要下载一批文件的情况,有时甚至需要把整个网 ...
- MVC下载文件方式
MVC下载文件方式 http://www.cnblogs.com/liang--liang/archive/2012/10/20/2732745.html 方式一: public FileStream ...
- mvc下载文件
MVC下载文件方式 方式一: public FileStreamResult DownFile(string filePath, string fileName) { string ab ...
- Asp.net mvc 下载文件
前言 最近有需求需要下载文件,可能是image的图片,也可能是pdf报告,也可能是微软的word或者excel文件. 这里就整理了asp.net mvc 和asp.net webapi 下载的方法 A ...
- 从Linux服务器下载网站文件
最近公司迁来一个新客户,该客户的网站是别的网络服务商做的,放在linux主机上,因为客户跟之前的网络服务商合作的不愉快 所以就把网站迁到我们公司,经理让我把网站文件和数据库download下来并在我们 ...
- MVC下载文件方式 包括网络地址文件
MVC下载文件方式 方式一: public FileStreamResult DownFile(string filePath, string fileName){ string absol ...
- wget 批量下载网站目录下的文件
执行如下命令就会自动下载 http://www.iyunwei.com/docs/ 下面的所有文件: wget -nd -r -l1 --no-parent http://www.iyunwei.co ...
随机推荐
- 动态加载 ShellCode绕过杀软
反病毒解决方案用于检测恶意文件,并且通常使用静态分析技术来区分二进制文件的好坏.如果是恶意文件本身包含恶意内容(ShellCode),那么依靠静态分析技术会非常有效,但如果攻击者使用轻量级的stage ...
- LightOJ - 1170 - Counting Perfect BST(卡特兰数)
链接: https://vjudge.net/problem/LightOJ-1170 题意: BST is the acronym for Binary Search Tree. A BST is ...
- 国赛 strange_int
参考文章地址https://www.52pojie.cn/thread-936377-1-1.html https://qrzbing.cn/2019/04/27/CISCN2019-strange- ...
- Acwing P298 围栏
Analysis ①首先将所有粉刷匠,按照必须刷的小木块Si从小到大排序. 上面这个操作为了保证我们可以顺序处理. ②我们可以设f[i][j]表示为,前i个粉刷匠,刷了前i个木块.可以有些木块选择不刷 ...
- Acwing P288 休息时间 题解
Analysis 首先假设一天的第N小时与后一天的第一个小时不相连, 这种情况下DP转移比较好想 dp[i][j][0/1]dp[i][j][0/1]表示 考虑一天的前i个小时,已经休息了j小时,且第 ...
- .Net Core WebApi实现跨域
.Net Core 需要引用一个包 Microsoft.AspNetCore.Cors 让接口实现跨域,需要配置两个地方. 一.Startup.cs 这里需要配置两个地方 public void C ...
- greenplum 下载地址
一.推荐使用下面下载地址 https://network.pivotal.io/products/pivotal-gpdb#/releases/158026/file_groups/1083 二.官网 ...
- 【JS】基础知识
引言 在互联网的演化过程中,网页制作是Web1.0时代的产物,那时网站的主要内容都是静态的,用户使用网站的行为也以浏览为主. 2005年以后,互联网进入了Web2.0时代,各类似桌面软件的Web应用大 ...
- coturn编译运行在Windows平台
turn 编译安装到Windows平台 https://www.webrtc-experiment.com/docs/TURN-server-installation-guide.html#windo ...
- Python自动生成代码工具
项目中有一个需求,对一个基类而言,拥有一个比较方法和拷贝方法,某些地方需要频繁地对这两个方法进行调用.对于所有子类而言,需要重写这两个方法,并在其中维护类内一些成员变量.例如有一个变量m_iMyVal ...