使用FileResult返回浏览器文件及乱码问题解决
一、向客户端发送文件方法
Asp.Net 中返回文件方法
public void TxtFile(string filename)
{
//html文件
string path = @"E:\Win10桌面\" + filename;
Response.ContentType = "text/xml";
//直接输出文件
Response.TransmitFile(path);
}
MVC中返回文件方法
public FileResult TxtFile(string filename)
{
//txt,html,xml文件
string path = @"E:\Win10桌面\" + filename; string contentType = "text/plan";
if (filename.Contains("html"))
contentType = "text/html";
else if (filename.Contains("xml"))
contentType = "text/xml";
//指定文件路径 返回FilePathResult
return File(path, contentType);
}
注意:很多时候返回html 文件在浏览器中显示乱码,原因是浏览器解析html文件默认使用utf-8编码解析,然而有很多网页的文件内容以及文件头使用gb2312编码,
解决方法是使用记事本
1.打开html源文件另存文件,选择utf-8编码,
2.修改html 文件头 content-type类型 为utf-8
如果源代码为:
<meta http-equiv="Content-type" content="text/html;" charset="gb2312" />
二、FileResult 介绍
1.
FileResult是一个基于文件的ActionResult,利用FileResult我们可以很容易地将从某个物理文件的内容响应给客户端。ASP.NET MVC定义了三个具体的FileResult,分别是FileContentResult、FilePathResult和FileStreamResult。
针对文件的响应具有两种形式,即内联(Inline)和附件(Attachment)。一般来说,前者会利用浏览器直接打开响应的文件,而后者会以独立的文件下载到客户端。对于后者,我们一般会为下载的文件指定一个文件名,这个文件名可以通过FileResult的FileDownloadName属性来指定。文件响应在默认情况下采用内联的方式,如果需要采用附件的形式,需要为响应创建一个名称为Content-Disposition的报头,该报头值的格式为“attachment; filename={ FileDownloadName }”。
2.
FileContentResult是针对文件内容创建的FileResult。如下面的代码片断所示,FileContentResult具有一个字节数组类型的只读属性FileContents表示响应文件的内容,该属性在构造函数中指定。FileContentResult针对文件内容的响应实现也很简单,从如下所示的WriteFile方法定义可以看出,它只是调用当前HttpResponse的OutputStream属性的Write方法直接将表示文件内容的字节数组写入响应输出流。
3.
从名称可以看出,FilePathResult是一个根据物理文件路径创建FileResult。如下面的代码片断所示,表示响应文件的路径通过只读属性FileName表示,该属性在构造函数中被初始化。在实现的WriteFile方法中,FilePathResult直接将文件路径作为参数调用当前HttpResponse的TransmitFile实现了针对文件内容的响应。抽象类Controller同样定义了两个File方法重载来根据文件路径创建相应的FilePathResult。
4.
FileStreamResult允许我们通过一个用于读取文件内容的流来创建FileResult。如下面的代码片断所示,读取文件流通过只读属性FileStream表示,该属性在构造函数中被初始化。在实现的WriteFile方法中,FileStreamResult通过指定的文件流读取文件内容,并最终调用当前HttpResponse的OutputStream属性的Write方法将读取的内容写入当前HTTP响应的输出流中。抽象类Controller中同样定义了两个File方法重载根据文件读取流创建相应的FileStreamResult。
使用FileResult返回浏览器文件及乱码问题解决的更多相关文章
- Spring MVC3返回JSON数据中文乱码问题解决(转)
Spring MVC3返回JSON数据中文乱码问题解决 查了下网上的一些资料,感觉比较复杂,这里,我这几使用两种很简单的办法解决了中文乱码问题. Spring版本:3.2.2.RELEASE Jack ...
- 【其他】【navicat】【1】navicat导入txt文件中文乱码问题解决
正文: TXT文件默认编码为ANSI,另存为编码为UTF-8的文本文件即可 备注: 1,一般需要导入的数据都是一张excel表,需要将excel表另存为“文本文件(制表符分隔)(*.txt)”保存类型 ...
- html文件中文在浏览器中显示乱码问题解决
利用浏览器打开html文件时,中文显示乱码,如下是原文件的内容 1 <html> 2 <head> 3 <title> ...
- Zip文件中文乱码问题解决方法(MAC->Windows)
前言: 最近收到的ZIP交互原型,打开查看中文一堆乱码.主要是产品都是高大上啊,用的都是MAC,咱酷毙用的Windows,话说安卓APP,你用MAC搞啥啊.可恨的压缩用的是zip,不是rar之类的.为 ...
- MyEclipse/Eclipse中properties文件中文乱码问题解决
有时候在myeclipse或者eclipse中打开properties文件时会发现其中的中文都是乱码.这是由于当前的properties文件编码格式不支持汉字造成的.当这种情况发生时,我们可以按照以下 ...
- Java 读取ANSI文件中文乱码问题解决方式[转]
第一步:首先判断源文件的编码格式: 按照给定的字符集存储文件时,在文件的最开头的三个字节中就有可能存储着编码信息,所以,基本的原理就是只要读出文件前三个字节,判定这些字节的值,就可以得知其编码的格式. ...
- JAVA 写中文字符串到指定文件 中文乱码 问题解决
之前试过下面代码里面的注释掉的 方法,都不行,后来想到了不如指定编码格式试试,果真可以了. String as= “中文字符”; //byte[] b = as.getBytes(); try{ Fi ...
- .net读取xml文件中文乱码问题解决
读取XML的编码方式Encoding.UTF8 要和<?xml version="1.0" encoding="utf-8"?>的encoding ...
- UIWebView加载ANSI格式的txt文件出现乱码问题解决
//若为txt文档 if([encodedString hasSuffix:@".txt"]){ NSData* Data = ...
随机推荐
- 用zepto找到当前被选中的option
$("#dealer").find("option").not(function(){ return !this.selected }).text(); 神奇的 ...
- 在linux下将当前目录文件全部小写含目录名
ls | sed -n '/[A-Z]/s/.*/mv & \L&/e' 公司以前用的windows server 服务器 文件大小写都一样. 新迁移到centos 服务器上,发现 ...
- 【行为型】Strategy模式
策略模式意图将解决问题的算法分别封装成一个个对象的形式,并使这些算法对象相互间可被替换.模式比较简单,对于策略对象结构的设计,可抽象一个抽象基类,并定义好相关算法(纯)虚接口,并由各种具体的实现算法子 ...
- CentOS-6.4安装配置Nginx
在安装nginx前,需要确保系统安装了g++.gcc.openssl-devel.pcre-devel和zlib-devel软件.安装必须软件: [root@admin /]#yum install ...
- 关于pthread里面一些函数的使用心得!
第一次使用pthread,遇到的问题还真不少,现在我一一记录一下: 1.关于编译时出现 对‘pthread_create’未定义的引用 之类的错误的解决:由于pthread库不是Linux系统默认的库 ...
- Linux&shell之如何控制脚本
写在前面:案例.常用.归类.解释说明.(By Jim) Ctrl+C组合键可以生产SIGINT信号Ctrl+Z组合键生产SIGTSTP信号,停止进程后程序仍然留在内存中,能够从停止的地方继续运行. 捕 ...
- 夏梦竹谈Hive vs. HBase的区别
对于刚接触大数据的用户来说,要想区分Hive与HBase是有一定难度的.本文将尝试从其各自的定义.特点.限制.应用场景等角度来进行分析,以作抛砖引玉之用. Hive是什么? Apache Hive是 ...
- 【转】ASCII码表在线查询
原文网址:http://www.litefeel.com/tools/ascii.php ASCII码对照表 下表列出了字符集中的 0 - 127 (0x00 - 0x7F). 十进制 十六进制 字符 ...
- HDU 4828 - Grids (Catalan数)
题目链接 : http://acm.hdu.edu.cn/showproblem.php?pid=4828 Catalan数的公式为 C[n+1] = C[n] * (4 * n + 2) / (n ...
- compile libvirt
POSIX-linux 编译安装libvirt依赖包; 1.yum install device-mapper-devel