SORU
29 NİSAN 2011, Cuma


Görünüm/dosya iade Download ASP.NET MVC

Bir sorun dosyaları bir veritabanı ASP.NET MVC kullanıcı geri içinde saklı gönderme karşılaşmış değilim. Benim istediğim bir manzara iki link, Dosya görüntüleme ve dosya tiplerini tarayıcı ele alınması gerektiğini belirlemek için gönderdi, ve başka bir indirme zorlamak için Listeleme.

Bir dosya SomeRandomFile.bak denilen görüntülemek için seçtiğim ve tarayıcı bu tür dosyaları açmak için ilişkilendirilmiş bir programa sahip değilse, o zaman indirme davranış söz varsaymak ile bir sorunum yok. Eğer bir dosya SomeRandomFile.pdf SomeRandomFile.jpg adlı görünüm için tercih edersem ancak, sadece dosya açmak istiyorum. Ama aynı zamanda bir indirme dosya türü ne olursa olsun istemi zorlarım indirme bağlantısı tutmak için yan tarafa doğru gidiyor. Bu mantıklı mı?

Ben denedim FileStreamResult ve o inşaat için en dosyalar, yapıcı kabul etmezse bir dosya adı varsayılan olarak, bu yüzden bilinmeyen dosyaları atanan bir dosya tabanlı url (bilmiyor uzantısını verin tabanlı içerik türü). Eğer bunu belirterek dosya adı zorluyorum, tarayıcı dosyayı doğrudan açmak için yeteneği kaybetmek ve bir indirme istemi alıyorum. Başkasının karşılaştı.

Bu şimdiye kadar denedim ne örnekleridir.

//Gives me a download prompt.
return File(document.Data, document.ContentType, document.Name);

//Opens if it is a known extension type, downloads otherwise (download has bogus name and missing extension)
return new FileStreamResult(new MemoryStream(document.Data), document.ContentType);

//Gives me a download prompt (lose the ability to open by default if known type)
return new FileStreamResult(new MemoryStream(document.Data), document.ContentType) {FileDownloadName = document.Name};

Herhangi bir öneriniz var mı?

CEVAP
29 NİSAN 2011, Cuma


public ActionResult Download()
{
    var document = ...
    var cd = new System.Net.Mime.ContentDisposition
    {
        // for example foo.bak
        FileName = document.FileName, 

        // always prompt the user for downloading, set to true if you want 
        // the browser to try to show the file inline
        Inline = false, 
    };
    Response.AppendHeader("Content-Disposition", cd.ToString());
    return File(document.Data, document.ContentType);
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Autocar

    Autocar

    11 Mart 2006
  • Bryan Adams

    Bryan Adams

    30 Mart 2006
  • lane182videos

    lane182video

    6 EKİM 2011