附件的下载问题

1、直接给出地址:完全暴露不安全,直接输入地址下载的方式应该是用措施制止的,这样会绕过权限验证。而且在附件名称带有一些符合时会影响到对附件的访问。比如% +等。

2、return File:这种方式可避免上面的问题

  public ActionResult Download(int? id)
        {           
            if (判断id是否合法)
            {
                attachment att = db.attachment.Find(id);得到附件信息                
                string contentType = MimeMapping.GetMimeMapping(att.地址);得到文件类型
                string filePath = Server.MapPath(att.地址);//路径
                return File(filePath,contentType,att.文件名);//filename不写自动把id参数当下载文件名
            }
            else
            {
                return RedirectToAction("错误提示view });                                
            }
        }

下面是网上说的其他几种方式

http://www.cnblogs.com/raohuagang/p/3903433.html

http://blog.163.com/zhi_qingfang@126/blog/static/1174775632012647453401/


3、FilePathResult:public FilePathResult File(string fileName, string contentType, string fileDownloadName);

public FilePathResult GetFileFromDisk()
{
  string path = AppDomain.CurrentDomain.BaseDirectory + "uploads/";
  string fileName = "test.txt";
  return File(path + fileName, "text/plain", "test.txt");
}
4、FileStreamResult:  public FileStreamResult File(Stream fileStream, string contentType, string fileDownloadName);

public FileStreamResult StreamFileFromDisk()
{
  string path = AppDomain.CurrentDomain.BaseDirectory + "uploads/";
  string fileName = "test.txt";
  return File(new FileStream(path + fileName, FileMode.Open), "text/plain", fileName);
}
5、 public  FileContentResult ( byte [] fileContents,  string  contentType);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值