Di WebForms, saya biasanya memiliki kode seperti ini agar browser menampilkan munculan "Unduh File" dengan jenis file yang berubah-ubah, seperti PDF, dan nama file:
Response.Clear()
Response.ClearHeaders()
''# Send the file to the output stream
Response.Buffer = True
Response.AddHeader("Content-Length", pdfData.Length.ToString())
Response.AddHeader("Content-Disposition", "attachment; filename= " & Server.HtmlEncode(filename))
''# Set the output stream to the correct content type (PDF).
Response.ContentType = "application/pdf"
''# Output the file
Response.BinaryWrite(pdfData)
''# Flushing the Response to display the serialized data
''# to the client browser.
Response.Flush()
Response.End()
Bagaimana cara menyelesaikan tugas yang sama di ASP.NET MVC?
asp.net-mvc
download
mgnoonan.dll
sumber
sumber
Untuk memaksa mengunduh file PDF, alih-alih ditangani oleh plugin PDF browser:
Jika Anda ingin membiarkan browser menangani perilaku defaultnya (plugin atau download), cukup kirimkan dua parameter.
Anda harus menggunakan parameter ketiga untuk menentukan nama file pada dialog browser.
PEMBARUAN: Charlino benar, ketika meneruskan parameter ketiga (nama file unduhan)
Content-Disposition: attachment;
akan ditambahkan ke Header Respons Http. Solusi saya adalah mengirimapplication\force-download
sebagai tipe pantomim, tetapi ini menimbulkan masalah dengan nama file unduhan sehingga parameter ketiga diperlukan untuk mengirim nama file yang baik, oleh karena itu menghilangkan kebutuhan untuk memaksa unduhan .sumber
content-disposition: attachment; filename=MyRenamedFile.pdf
- inilah yang memaksa unduhan. Saya sarankan Anda mengembalikan tipe MIMEapplication/pdf
.Content-Disposition: attachment;
hubungan ketiga .Anda dapat melakukan hal yang sama di Razor atau di Controller, seperti ..
Atau di Controller ..
Saya mencoba ini di Chrome dan IE9, keduanya mengunduh file pdf.
Saya mungkin harus menambahkan saya menggunakan RazorPDF untuk menghasilkan PDF saya. Ini adalah blog tentang itu: http://nyveldt.com/blog/post/Introducing-RazorPDF
sumber
Anda harus melihat metode File dari Controller. Untuk itulah tepatnya. Ini mengembalikan FilePathResult, bukan ActionResult.
sumber
mgnoonan,
Anda dapat melakukan ini untuk mengembalikan FileStream:
sumber
Meskipun hasil tindakan standar FileContentResult atau FileStreamResult dapat digunakan untuk mengunduh file, agar dapat digunakan kembali, membuat hasil tindakan kustom mungkin merupakan solusi terbaik.
Sebagai contoh, mari buat hasil tindakan kustom untuk mengekspor data ke file Excel dengan cepat untuk diunduh.
Kelas ExcelResult mewarisi kelas ActionResult abstrak dan menggantikan metode ExecuteResult.
Kami menggunakan paket FastMember untuk membuat DataTable dari objek IEnumerable dan paket ClosedXML untuk membuat file Excel dari DataTable.
Di Kontroler gunakan hasil tindakan ExcelResult kustom sebagai berikut
Karena kita mendownload file menggunakan HttpGet, buat View kosong tanpa model dan layout kosong.
Posting blog tentang hasil tindakan kustom untuk mendownload file yang dibuat dengan cepat:
https://acanozturk.blogspot.com/2019/03/custom-actionresult-for-files-in-aspnet.html
sumber
Gunakan jenis file .ashx dan gunakan kode yang sama
sumber