前言

上传文件我使用的是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 下载网站的文件的更多相关文章

  1. Linux Shell 下载网站指定文件

    Shell脚本,用来从网站下载指定文件名的文件.先判断本地这个文件是否存在,如果存在则忽略,不存在则从远程服务器上下载,下载成功后本地的批次号累加1,然后使用新的批次号继续下载新文件. #!/bin/ ...

  2. Spring MVC -- 下载文件

    像图片或者HTML文件这样的静态资源,在浏览器中打开正确的URL即可下载,只要该资源是放在应用程序的目录下,或者放在应用程序目录的子目录下,而不是放在WEB-INF下,tomcat服务器就会将该资源发 ...

  3. [No00006B]方便的网络下载工具wget 可下载网站目录下的所有文件(可下载整个网站)

    wget是linux下命令行的下载工具,功能很强大,它能完成某些下载软件所不能做的,比如如果你想下载一个网页目录下的所有文件,如何做呢?网络用户有时候会遇到需要下载一批文件的情况,有时甚至需要把整个网 ...

  4. MVC下载文件方式

    MVC下载文件方式 http://www.cnblogs.com/liang--liang/archive/2012/10/20/2732745.html 方式一: public FileStream ...

  5. mvc下载文件

    MVC下载文件方式 方式一: public FileStreamResult DownFile(string filePath, string fileName)  {       string ab ...

  6. Asp.net mvc 下载文件

    前言 最近有需求需要下载文件,可能是image的图片,也可能是pdf报告,也可能是微软的word或者excel文件. 这里就整理了asp.net mvc 和asp.net webapi 下载的方法 A ...

  7. 从Linux服务器下载网站文件

    最近公司迁来一个新客户,该客户的网站是别的网络服务商做的,放在linux主机上,因为客户跟之前的网络服务商合作的不愉快 所以就把网站迁到我们公司,经理让我把网站文件和数据库download下来并在我们 ...

  8. MVC下载文件方式 包括网络地址文件

    MVC下载文件方式 方式一: public FileStreamResult DownFile(string filePath, string fileName){      string absol ...

  9. wget 批量下载网站目录下的文件

    执行如下命令就会自动下载 http://www.iyunwei.com/docs/ 下面的所有文件: wget -nd -r -l1 --no-parent http://www.iyunwei.co ...

随机推荐

  1. 2019-2020-1 20199312 《Linux内核原理与分析》 第九周作业

    进程调度 1.中断:起到切出进程指令流的作用.中断处理程序是与进程无关的内核指令流.中断类型: 硬中断:可屏蔽中断和不可屏蔽中断.高电平说明有中断请求. 软中断/异常: 故障:出问题,但可以恢复到当前 ...

  2. js正则验证input输入框有空格时提示直接去除空格

    <input type="text" id="test"/> <input type="button" value=&qu ...

  3. Dubbo生产者和消费者经典案例

    一.导入依赖 <dependency> <groupId>javaee</groupId> <artifactId>javaee-api</art ...

  4. Kafka 通过python简单的生产消费实现

    使用CentOS6.5.python3.6.kafkaScala 2.10  - kafka_2.10-0.8.2.2.tgz (asc, md5) 一.下载kafka 下载地址 https://ka ...

  5. loj #6342. 跳一跳 期望dp

    令 $f[i]$ 表示已经到达 $i$ 点,为了到大 $n$ 点还期望需要的时间,随便转移一下就行. 由于本题卡空间,要记得开滚动数组. #include <bits/stdc++.h> ...

  6. CF1205题解

    B 最高有\(64\)位,当\(n\le 128\)时,最坏情况形成不了三元环,\(floyed\)暴力做 否则直接输出\(3\) C 题意的\(n\)均为奇数,设\((i,j)\),把\(i+j\) ...

  7. 2.json解析

    static String jsonStr = "{\"sites\":[{\"name\":\"gold\",\"ur ...

  8. 【CSP模拟赛】奇怪的队列(树状数组 &二分&贪心)

    题目描述 nodgd的粉丝太多了,每天都会有很多人排队要签名.  今天有n个人排队,每个人的身高都是一个整数,且互不相同.很不巧,nodgd今天去忙别的事情去了,就只好让这些粉丝们明天再来.同时nod ...

  9. RabbitMQ入门学习系列(六) Exchange的Topic类型

    快速阅读 介绍exchange的topic类型,和Direct类型相似,但是增加了"."和"#"的匹配.比Direct类型灵活 Topic消息类型 特点是:to ...

  10. springcloud config自动刷新中文乱码问题

    摘录一段网上盛传的,如下: 在使用 spring cloud config 时,如果在 properties 文件里面有中文的话,会出现乱码. 乱码的原因是:spring 默认使用org.spring ...