首页 新闻 会员 周边 捐助

C# Response.BinaryWrite 保存文件 docx乱码

0
悬赏园豆:30 [已解决问题] 解决于 2019-09-05 18:42

var obj = client.GetObject(bucketName, objectid);
using (var requestStream = obj.Content)
{
byte[] mbyte = new byte[(int)requestStream.Length];

            while (requestStream.Read(mbyte, 0, mbyte.Length) > 0)
            {

            }

            Response.Clear();
            Response.Buffer = true;
            Response.ContentType = "application/octet-stream";
            Response.ContentEncoding = Encoding.GetEncoding("GB2312");// Encoding.UTF8;
            Response.AddHeader("Content-Disposition", "attachment; filename=" + outputFileName);
            Response.AddHeader("Content-Length", mbyte.Length.ToString());
            Response.AddHeader("Content-Transfer-Encoding", "binary");

            Response.BinaryWrite(mbyte);
            Response.Flush();
            Response.End();

        }

使用阿里云的对象存储功能。下载文件流,然后保存成对应的文件 。 这段代码 txt文件保存没有问题 ,但是docx保存打开就显示乱码了。请路过的大神帮忙看下,是不是哪里没有设置好。有没有解决方法。

漫长之路的主页 漫长之路 | 初学一级 | 园豆:181
提问于:2019-08-20 14:22
< >
分享
最佳答案
0

采用了阿里云oss的其他方式,可以成功下载文件了

漫长之路 | 初学一级 |园豆:181 | 2019-09-05 18:31
其他回答(2)
0
收获园豆:15
dudu | 园豆:29732 (高人七级) | 2019-08-20 14:25

不太清楚是什么原因,用了其他方式解决了。

支持(0) 反对(0) 漫长之路 | 园豆:181 (初学一级) | 2019-09-05 18:38
0

中文编码问题吧,改成:
Response.ContentEncoding = Encoding.GetEncoding("utf-8")

收获园豆:15
Luckyfish小文 | 园豆:335 (菜鸟二级) | 2019-08-22 14:45

这个之前试过的,Encoding.UTF8 或者 Encoding.GetEncoding("utf-8") 还是一样的。不太清楚是什么原因,用了其他方式解决了。

支持(0) 反对(0) 漫长之路 | 园豆:181 (初学一级) | 2019-09-05 18:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册