2014-11-11 4 views
0

У меня есть приложение ASP.Net MVC 4, которое загружает пустой файл. Что мне не хватает?FileStream action writing empty file

Контроллер:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    public FileStreamResult ICS() 
    { 
     var memoryStream = new MemoryStream(); 
     StreamWriter sw = new StreamWriter(memoryStream); 
     sw.WriteLine(@"BEGIN:VCALENDAR"); 
     sw.WriteLine(@"VERSION:2.0"); 
     sw.WriteLine(@"PRODID:-//www.marudot.com//iCal Event Maker"); 
     sw.WriteLine(@"BEGIN:VEVENT"); 
     sw.WriteLine(@"DTSTAMP:20141111T165545Z"); 
     sw.WriteLine(@"UID:[email protected]"); 
     sw.WriteLine(@"DTSTART;TZID=""America/Chicago"":20141114T080000"); 
     sw.WriteLine(@"DTEND;TZID=""America/Chicago"":20141114T120000"); 
     sw.WriteLine(@"SUMMARY:Bobby's Big Bash"); 
     sw.WriteLine(@"DESCRIPTION:test"); 
     sw.WriteLine(@"LOCATION:test"); 
     sw.WriteLine(@"END:VEVENT"); 
     sw.WriteLine(@"END:VCALENDAR"); 

     sw.Flush(); 
     return new FileStreamResult(memoryStream, "text/calendar") { FileDownloadName = "test.ics" }; 
    } 

} 

Вид:

<h2>Index</h2> 
@Html.ActionLink("ical event", "ICS"); 

Щелкнув по ссылке скачивает пустой файл ICS.

ответ

3

Установить свойство Position на 0 для объекта MemoryStream после сброса.

1

Просто догадайтесь - MemoryStream выходит за рамки, прежде чем вы сможете скачать файл. Возможно, посмотрите, что произойдет, когда вы напишете содержимое в фактический файл, а затем перечитайте этот файл. Path.GetTempFileName(); может быть полезна для записи временного файла.

 Смежные вопросы

  • Нет связанных вопросов^_^