Saya sudah menyarankan kepada saya bahwa saya harus menggunakan FileResult untuk memungkinkan pengguna mengunduh file dari aplikasi Asp.Net MVC saya. Tapi satu-satunya contoh ini saya dapat temukan selalu ada hubungannya dengan file gambar (menentukan jenis konten gambar / jpeg).
Tetapi bagaimana jika saya tidak dapat mengetahui jenis file? Saya ingin pengguna dapat mengunduh hampir semua file dari file di situs saya.
Saya telah membaca satu metode untuk melakukan ini (lihat posting sebelumnya untuk kode), yang benar-benar berfungsi dengan baik, kecuali untuk satu hal: nama file yang muncul dalam dialog Save As disatukan dari path file dengan garis bawah ( folder_folder_file.ext). Juga, tampaknya orang berpikir saya harus mengembalikan FileResult daripada menggunakan kelas kustom ini yang saya temukan BinaryContentResult.
Adakah yang tahu cara "benar" melakukan pengunduhan di MVC?
EDIT: Saya mendapat jawabannya (di bawah), tetapi hanya berpikir saya harus memposting kode kerja lengkap jika orang lain tertarik:
public ActionResult Download(string filePath, string fileName)
{
string fullName = Path.Combine(GetBaseDir(), filePath, fileName);
byte[] fileBytes = GetFile(fullName);
return File(
fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}
byte[] GetFile(string s)
{
System.IO.FileStream fs = System.IO.File.OpenRead(s);
byte[] data = new byte[fs.Length];
int br = fs.Read(data, 0, data.Length);
if (br != fs.Length)
throw new System.IO.IOException(s);
return data;
}
Response.ContentType = MimeMapping.GetMimeMapping(filePath);
, dari stackoverflow.com/a/22231074/4573839