ฉันแนะนำให้ฉันใช้ FileResult เพื่ออนุญาตให้ผู้ใช้ดาวน์โหลดไฟล์จากแอปพลิเคชัน Asp.Net MVC ของฉัน แต่ตัวอย่างเดียวของสิ่งนี้ที่ฉันสามารถหาได้เสมอเกี่ยวกับไฟล์รูปภาพ (การระบุประเภทเนื้อหาอิมเมจ / jpeg)
แต่ถ้าฉันไม่รู้จักประเภทไฟล์ล่ะ ฉันต้องการให้ผู้ใช้สามารถดาวน์โหลดไฟล์ใดก็ได้จากไฟล์ของเว็บไซต์ของฉัน
ฉันได้อ่านวิธีหนึ่งในการทำเช่นนี้ (ดูโพสต์ก่อนหน้าสำหรับรหัส) ที่ใช้งานได้จริงยกเว้นสิ่งหนึ่ง: ชื่อของไฟล์ที่เกิดขึ้นในกล่องโต้ตอบบันทึกเป็นถูกตัดแบ่งจากพา ธ ไฟล์ที่มีเครื่องหมายขีดล่าง ( folder_folder_file.ext) นอกจากนี้ดูเหมือนว่าผู้คนคิดว่าฉันควรคืน FileResult แทนที่จะใช้คลาสที่กำหนดเองนี้ซึ่งฉันได้พบ BinaryContentResult
ใครรู้วิธีที่ถูกต้องในการดาวน์โหลดเช่นนี้ใน MVC
แก้ไข: ฉันได้รับคำตอบ (ด้านล่าง) แต่แค่คิดว่าฉันควรโพสต์รหัสการทำงานแบบเต็มหากมีคนสนใจ:
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);
จากstackoverflow.com/a/22231074/4573839