2011-09-12 15 views
6

dosyasını indirerek böyle reutrns bir FileResult:ASP.NET MVC: bir excel bir excel C# eylem yöntemi dahilinde dosyasını indiriyorum

return File(bindata, "application/octet-stream", "mytestfile.xls"); 

el üstünde karşılık gelen URL'ye gittiğinizde yöntem, sonra dosyanın görüntülenen temsilini alırım. Dosya bir Farklı Kaydet ile indirilmeyecek.

Yüklemeyi Farklı Kaydet -dialog aracılığıyla gerçekleşmeye zorlamanın bir yolu var mı? Eğer File yöntemine bir dosya adı belirtmek Kaydet-As iletişim daima gösterecek şekilde

-pom-

+0

bu belirli bir tarayıcı meydana görüyor musunuz:

böyle uygulama/vnd.ms-excel için ortam türünü değiştirmeyi deneyin? Ve neden excel dosyaları için MIME türünü kullanmıyorsunuz? –

+0

Merhaba Charles, haklısın, bu sadece Opera ile olur. Şimdi FF ve Safari ile test ettim, orada bir kaydetme diyaloğu var. – Pompair

cevap

5

Geri döndüğünüz ortam türü nedeniyle bu davranışı aldığınızı hissediyorum.

return File(bindata, "application/vnd.ms-excel", "mytestfile.xls"); 
+1

da bunu bir excel 2010 (xslx) ise kullanabilirsiniz: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet – Iridio

8

Normalde otomatik olarak Content-Disposition başlığını ekler. Bu yüzden kodunuzun çalışmadığını söylediğinde biraz şaşırdım. El ile de bu başlık deneyebilirsiniz:

Response.AppendHeader("Content-Disposition", "attachment; filename=mytestfile.xls"); 
+0

Typo içeride, "Content-Disposition" olmalı –

+0

@Jared Peless, evet, bunu fark ettim ve düzeltdim. –

4

Bunu deneyebilir miyim: Bu yardımcı olur

return new FileContentResult(bindata, "application/vnd.ms-excel") 
      { 
       FileDownloadName = "mytestfile.xls") 
      }; 

Umut.

İlgili konular