这里先说下载文件

<a style="color:black; margin-right:3px;" onclick="dowAtt(' + index + ')" ><i class="fa  fa-book"></i>查看附件</a>
    function dowAtt(i) {
var rows = $("#orderGrid").datagrid("getRows");
if (rows[i].LogisticsAtt != null) {
window.location.href = "/Admin/Account/Download?filePath=" + rows[i].LogisticsAtt;
} else {
layer.msg("服务器暂未查找到该附件!");
}
}
        /// <summary>
/// 下载
/// </summary>
/// <returns></returns>
[HttpGet]
public ActionResult Download()
{
string filePath = Server.MapPath(Request.Params["filePath"]); //文件路径
string fileName = filePath.Substring(filePath.LastIndexOf('\\') + ); //文件名
byte[] bytes = null;
try
{
FileStream fs = new FileStream(filePath, FileMode.Open);
bytes = new byte[(int)fs.Length];
fs.Read(bytes, , bytes.Length);
fs.Close();
}
catch (Exception e)
{
Response.Redirect("/Admin/Error/ServerError/1");
return View();
} Response.Charset = "utf-8";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
Response.BinaryWrite(bytes);
Response.Flush();
Response.End(); return new EmptyResult();
}

就这么简单,结合我前面的那一篇上传,你的上传下载就全部搞定了

这一part我要来说说mvc配置xml保护服务器文件不被url直接访问

在你需要受保护的文件夹里面新建一个Web.config(当然你要是全站都想保护的话,请忽略这一步,直接在最外面的web.config配置就行了

然后把你需要保护的后缀名加进来就行了

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<security>
<requestFiltering>
<fileExtensions>
<add fileExtension=".png" allowed="false"/>
<add fileExtension=".rar" allowed="false"/>
<add fileExtension=".zip" allowed="false"/>
<add fileExtension=".doc" allowed="false"/>
<add fileExtension=".docx" allowed="false"/>
<add fileExtension=".xls" allowed="false"/>
<add fileExtension=".xlsx" allowed="false"/>
<add fileExtension=".pdf" allowed="false"/>
<add fileExtension=".swf" allowed="false"/>
<add fileExtension="ceb" allowed="false"/>
<add fileExtension=".7z" allowed="false"/>  
</fileExtensions>
</requestFiltering>
</security>
</system.webServer>
</configuration>

这样就行了,如果你在地址栏输入文件路径是会报404的错的。

---------------------------------------------------------------------------------------------------------

转载请记得说明作者和出处哦-.-
作者:KingDuDu
原文出处:https://www.cnblogs.com/kingdudu/articles/4765544.html

---------------------------------------------------------------------------------------------------------

【第十三篇】mvc下载文件,包括配置xml保护服务端文件不被外链直接访问的更多相关文章

  1. 利用webuploader插件上传图片文件,完整前端示例demo,服务端使用SpringMVC接收

    利用WebUploader插件上传图片文件完整前端示例demo,服务端使用SpringMVC接收 Webuploader简介   WebUploader是由Baidu WebFE(FEX)团队开发的一 ...

  2. android-HttpClient上传信息(包括图片)到服务端

    需要下载apache公司下的HttpComponents项目下的HTTPCLIENT ----------地址为http://hc.apache.org/downloads.cgi 主要是用到了htt ...

  3. 【2】循序渐进学 Zabbix:安装配置 Zabbix Server 服务端

    上一篇 [1]循序渐进学 Zabbix :初识与基础依赖环境搭建( LNMP ) 安装 Zabbix Server 上篇我们在 192.168.200.101 上面安装了 Zabbix 所依赖的 LN ...

  4. android 图片上传到服务端 文件损坏问题

    在网上找的例子,怎么试都不行. 上传上去之后提示文件损坏,不过最后问题还是找到了. 是因为不能在写入流的byte中写入其他内容 这是网上的例子 如果是要在服务端取文件名,可以在这里写入 在服务端获取文 ...

  5. 携程开源分布式配置系统Apollo服务端是如何实时更新配置的?

    引言 前面有写过一篇<分布式配置中心apollo是如何实时感知配置被修改>,也就是客户端client是如何知道配置被修改了,有不少读者私信我你既然说了client端是如何感知的,那服务端又 ...

  6. ORA-12541:TNS:no listener 客户端tnsnames.ora配置,以及服务端listener.ora配置

    需求:客户端(192.168.25.1)需要访问服务端(192.168.7.215)的Oracle库ORCL. 步骤一:配置客户端tnsnames.ora 步骤二:配置服务端listener.ora ...

  7. 【2017-05-30】WebForm文件上传。从服务端删除文件

    用 FileUpload控件进行上传文件. <asp:FileUpload ID="FileUpload1"  runat="server" /> ...

  8. 第十三篇、OC_UICollectionView的基本配置

    - (UICollectionView *) categoryCollectionView { if (! _categoryCollectionView) { // 创建布局 UICollectio ...

  9. LoadRunner【第一篇】下载、安装、破解、修改端口号

    loadrunner11下载 loadrunner11大小有4g多,相对另外一款开源的性能测试工具jmeter来说,是非常笨重的了,可以关注公众号联系作则获取. loadrunner11安装(win7 ...

随机推荐

  1. Spider & CrawlSpider

    CrawlSpide 最重要的是分析源码官方文档百度收搜 Spider document 就是官方文档了1.3的源码分析CrawlSpide 是爬取一个网站常用的规则 它是对spider进一步的包装 ...

  2. net core Webapi基础工程搭建(六)——数据库操作_Part 2

    目录 前言 开始 使用 小结 前言 昨天是写着写着发现,时间不早了,已经养成了晚上下班抽时间看看能写点儿啥的习惯(貌似),今天实在是不想让昨天没做完的事情影响,所以又坐下,沉下心(周末了),开始把数据 ...

  3. JS中 isNaN() 方法解析

    1. isNaN() 存在的意义 由于 NaN 是唯一一个不等于自身的值,不像其他的值,可以用相等操作符来判断是否等于自身,NaN == NaN和NaN === NaN都会返回false,所以isNa ...

  4. shell中特殊符号的作用

    linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行 ...

  5. unityshader(属性)

    _Color("Color",Color)=(1,1,1,1)//RGBA _Vector("vector",Vector)=(1,2,3,4) //,fixe ...

  6. Java多线程之线程的生命周期

    Java多线程之线程的生命周期 一.前言 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态.在线程的生命周期中,它要经过新建(New).就绪(Runnable).运行(R ...

  7. 【数据库】MySQL 函数大全包含示例(涵盖了常用如时间、数字、字符串处理、数据流函数的和一些冷门的)

    ps:博客园markdown不能自动生成列表,更好的阅读体验可访问我的个人博客http://www.isspark.com/archives/mysqlFunctionDesc 数学函数(Mathem ...

  8. JavaScript label语句

    使用label 语句可以在代码中添加标签,以便将来使用. 以下是label 语句的语法: label: statement 下面是一个示例: start: for (var i=0; i < c ...

  9. 从入门到入土的JS 随笔day01

    js 的全称是javascript ,JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型. 它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用 ...

  10. python编写排列组合,密码生产功能

    python编写排列组合 python在编写排列组合是会用到  itertools 模块 排列 import itertools mylist = list(itertools.permutation ...