这里先说下载文件

<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. QMS 的趨勢概述

    自泰勒Taylor提出的科学管理被奉行后,制造业的分工已然成形,而产品不再是由工匠单独负责完成.为确保产品的质量,产品在完工后的检验为确保瑕疵品不外流出给客户的必要关卡.然而当产品依靠检验结果并无法减 ...

  2. Go-json解码到结构体

    废话不多说,直接干就得了,上代码 package main import ( "encoding/json" "fmt" ) type IT struct { ...

  3. ajax提交的问题点记录

    原始方式是这样的: var prId = $("#prId").val(); var prNumber = $("#prNumber").val(); var ...

  4. 100天搞定机器学习|day45-53 推荐一本豆瓣评分9.3的书:《Python数据科学手册》

    <Python数据科学手册>共五章,每章介绍一到两个Python数据科学中的重点工具包.首先从IPython和Jupyter开始,它们提供了数据科学家需要的计算环境:第2章讲解能提供nda ...

  5. Linux应用开发自学之路

    前言 在 「关于我 」那篇博文里,朋友们应该知道了我不是科班出身,是由机械强行转行到Linux应用开发方向.下面我就详细向大家介绍自己这一路上的转行历程,希望对大家有所启发. 我是学机械专业的,对于机 ...

  6. Qt最新版5.12.2在Win10环境静态编译安装和部署的完整过程(VS2017)

    一.为什么要静态编译 用QtCreator编译程序时,使用的是动态编译.编译好的程序在运行时需要另外加上相应的Qt库文件,一大堆dll文件.如果想将生成的程序连同所需要的库一起完整地打包成一个可执行程 ...

  7. 《Tomcat和JVM的性能调优你真的学会了吗?》总结篇

    Tomcat性能调优: 找到Tomcat根目录下的conf目录,修改server.xml文件的内容.对于这部分的调优,我所了解到的就是无非设置一下Tomcat服务器的最大并发数和Tomcat初始化时创 ...

  8. JMeter用户参数

    压测的时候,经常需要使用动态参数,即每次请求的参数不一样,这样才能更好的模拟真实的用户请求,我们首先能想到的也是最常见的就是用户ID 1.  用户参数 我们可以定义一个变量,然后指定多个值,这样每次请 ...

  9. python 实现多个线程间消息队列传递,一个简单的列子

    #-*-coding:utf8-*-"""Producer and consumer models: 1. There are many producers and co ...

  10. redis六种内存淘汰策略学习

    当客户端会发起需要更多内存的申请,Redis检查内存使用情况,如果实际使用内存已经超出maxmemory,Redis就会根据用户配置的淘汰策略选出无用的key; 当前Redis3.0版本支持的淘汰策略 ...