asp.net-mvc – 服务txt的asp.net mvc被截断
发布时间:2020-12-16 09:31:16 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试使用操作提供由数据库创建的txt文件.行动如下: public ActionResult ATxt(){ var articulos = _articulosService.ObteTotsArticles(); return File(CatalegATxt.ATxt(articulos),"text/plain");} 和CatalegATxt类是: using System;using System.
我正在尝试使用操作提供由数据库创建的txt文件.行动如下:
public ActionResult ATxt() { var articulos = _articulosService.ObteTotsArticles(); return File(CatalegATxt.ATxt(articulos),"text/plain"); } 和CatalegATxt类是: using System; using System.Collections.Generic; using System.IO; using System.Text; using WebDibaelsaMVC.DTOs.Busqueda; namespace WebDibaelsaMVC.TxtLib { public static class CatalegATxt { public static Stream ATxt(IEnumerable<ArticuloBusquedaDTO> articles) { var stream = new MemoryStream(); var streamWriter = new StreamWriter(stream,Encoding.UTF8); foreach (ArticuloBusquedaDTO article in articles) { streamWriter.WriteLine(article.ToStringFix()); } stream.Seek(0,SeekOrigin.Begin); return stream; } public static string ToStringFix(this ArticuloBusquedaDTO article) { string result = ""; result += article.CodigoArticulo.PadRight(10,' ').Substring(0,10); result += article.EAN.Trim().PadLeft(13,'0').Substring(0,13); result += article.NombreArticulo.PadRight(100,100); result += article.Marca.PadRight(100,100); result += article.Familia.PadRight(50,50); result += article.PrecioCesion.ToStringFix(); result += article.PVP.ToStringFix(); return result; } private static string ToStringFix(this double numero) { var num = (int)Math.Round(numero * 100,0); string result = num.ToString().PadLeft(10,'0'); return result; } } } 它只根据我从数据库中获取的东西写入文件行.但是当我查看文件时,它看起来被截断了.该文件大约是8Mb.我也尝试在从ATxt返回之前转换为byte [],结果相同. 任何的想法? 谢谢, 普约尔 更新:我还试图从相同的内容提供XML,它也被截断.它不会被截断数据(我认为它可能是一个EOF字符),但它在标签的中间被截断… 解决方法
我遇到了完全相同的问题.文本文件将始终作为截断返回.
我突然想到它可能是一个“潮红”的问题,事实确实如此.编写器的缓冲区在操作结束时没有被刷新 – 因为没有使用块或者Close()调用 – 它会自动刷新. 你需要打电话: streamWriter.Flush(); 在MVC接管流之前. 这是你的方法应该是这样的: public static Stream ATxt(IEnumerable<ArticuloBusquedaDTO> articles) { var stream = new MemoryStream(); var streamWriter = new StreamWriter(stream,Encoding.UTF8); foreach (ArticuloBusquedaDTO article in articles) { streamWriter.WriteLine(article.ToStringFix()); } // Flush the stream writer buffer streamWriter.Flush(); stream.Seek(0,SeekOrigin.Begin); return stream; } 希望这可以帮助! 米罗斯拉夫 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 输出在剃刀通过变量?
- asp.net – 无法在Page回调中调用Response Redirect?
- asp.net-core – 实体框架核心 – 相当于IN子句
- asp.net-mvc – WebService还是一个简单的MVC控制器?
- asp.net-mvc – 在Mono 2.4上使用Microsoft Data Entity Fr
- 停止代码构建器转义单引号ASP.NET MVC 2
- 如何使用Fluent Nhibernate中的Automapping进行OR Mapping映
- [转]谈谈技术原则,技术学习方法,代码阅读及其它
- asp.net – Linq to SQL Design的问题
- asp.net – 从Web应用程序中查找网站名称
推荐文章
站长推荐
- email – 如何检查是myMail.Send是true / false
- asp.net – 有谁知道如何摆脱我的.net网络服务的
- ASP.NET MVC 4 – Ajax.BeginForm和html5
- asp.net核心 – 在ASP.NET核心应用程序中使用NLo
- 关于在asp.net mvc中实现忘记密码功能的一些问题
- asp.net – 找不到’AppModule’的NgModule元数据
- asp.net-mvc – ASP.NET MVC MultiSelectList,其
- asp.net-mvc-3 – 货币格式化MVC
- asp.net-mvc – 弹出编辑模式下的多个列
- asp.net-mvc – ASP.NET MVC中的动态范围验证2
热点阅读