博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第六章 MVC之 FileResult和JS请求二进制文件
阅读量:6868 次
发布时间:2019-06-26

本文共 2266 字,大约阅读时间需要 7 分钟。

一、FileResult 

1、简介

表示一个用于将二进制文件内容发送到响应的基类。它有三个子类:

FileContentResult

FilePathResult
FileStreamResult

推荐阅读:https://www.cnblogs.com/weiweixiang/p/5667355.html

2、FilePathResult

首先、创建一个mvc5项目、然后添加一个FileTest控制器,添加以下方法

public ActionResult Export()        {            // Response.ContentType指定文件类型 可以为application/ms-excel || application/ms-word || application/ms-txt || application/ms-html            return File(Server.MapPath("/UserData/test.docx"), "application/ms-word", "test.docx");        }

使用非常方便,这样即可实现下载

3、FileContentResult

public ActionResult Getbg()        {             string bgimg = AppDomain.CurrentDomain.BaseDirectory + "/UserData/bg.jpg";            Image img = Image.FromFile(bgimg);            byte[] bytes = ImageToBytes(img);            return File(bytes, "image/jpeg");        }

使用非常方便,这样即可实现图片的显示,在临时描绘图片并展示的场景中非常实用。

4、FileStreamResult

public ActionResult ExportDoc()        {            var path = Server.MapPath("/UserData/test.docx");            var fileName = HttpUtility.UrlEncode("test.docx", Encoding.GetEncoding("UTF-8"));            return File(new FileStream(path, FileMode.Open), "application/ms-word", fileName);        }

 

二、JS请求二进制文件

jquery并不支持流文件,

js重要实现来自于情郎的博文:

 

知识点:

Content-Disposition

http://www.jb51.net/article/30565.htm    

  header中Content-Disposition的作用与使用方法:

  当代码里面使用Content-Disposition来确保浏览器弹出下载对话框的时候。 response.addHeader("Content-Disposition","attachment");一定要确保没有做过关于禁止浏览器缓存的操作。如下:

response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "No-cache"); response.setDateHeader("Expires", 0);

http://blog.csdn.net/iamiwangbo/article/details/52911716

XMLHttpRequest

  使用blob实现文件的下载和上传

 

本文源码下载:https://gitee.com/zmsofts/XinCunShanNianDaiMa/blob/master/ActionResultOfMvc5Study.rar

 

 

参考:

https://msdn.microsoft.com/zh-cn/library/system.web.mvc.fileresult.aspx

http://www.cnblogs.com/bmib/p/3518486.html

http://www.runoob.com/ajax/ajax-intro.html    ajax学习

https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest

http://www.ruanyifeng.com/blog/2012/09/xmlhttprequest_level_2.html  讲解XMLHttpRequest 1 和2 的区别

http://www.cnblogs.com/cdemo/p/5225848.html

https://www.cnblogs.com/weiweixiang/p/5667355.html

https://www.cnblogs.com/xielong/p/5940535.html

 

你可能感兴趣的文章
Eclipse 如何快速修改工程名及包名
查看>>
spring cloud微服务分布式云架构 - Spring Cloud简介
查看>>
Android之哭笑不得的BUG--RelativeLayout设置的marginbottom失效,马萨卡..
查看>>
Application.onCreate()会造成Service启动ANR么?
查看>>
css-水平居中、垂直居中(初级篇)
查看>>
一线互联网常见的14个Java面试题,你颤抖了吗
查看>>
学习webpack4 - 样式处理
查看>>
nextjs踩坑
查看>>
TiKV 源码解析系列文章(二)raft-rs proposal 示例情景分析
查看>>
【基础】小程序实现聊天气泡样式
查看>>
153. Find Minimum in Rotated Sorted Array
查看>>
Java程序员幽默爆笑锦集
查看>>
手机H5 web调试利器——WEINRE (WEb INspector REmote) 安卓手机
查看>>
LeetCode31.下一个排列 JavaScript
查看>>
47. Permutations II
查看>>
ElasticSearch重要概念及简单用法
查看>>
SpiderData 2019年2月20日 DApp数据排行榜
查看>>
==与===的区别
查看>>
浅析 Vue 2.6 中的 nextTick 方法
查看>>
【剑指offer】6.用两个栈实现队列
查看>>