작업을 사용하여 데이터베이스에서 만든 txt 파일을 제공하려고합니다. 동작은 다음과 같다 :asp.net mvc 서빙 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, ' ').Substring(0, 100);
result += article.Marca.PadRight(100, ' ').Substring(0, 100);
result += article.Familia.PadRight(50, ' ').Substring(0, 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 문자되었을 줄 알았는데)하지만 레이블의 중간에 자릅니다 ...
Quick Q, txt 및 xml 테스트의 경우 반환되는 파일 크기는 같은 길이입니까? 이것은 우리가 그것을 추적하는 데 도움이 될 수 있습니다. – Rippo
위 ActionResult 메서드에서 CatelegAText.ATxt의 내용을 추적하는 경우 반환하기 전에 정확한 데이터가 들어 있습니까? – glenatron
@Rippo : 길이가 같지 않습니다. txt는 일부 Mb이고, xml은 1Mb보다 작습니다. –