ส่งคืนไฟล์เพื่อดู / ดาวน์โหลดใน ASP.NET MVC
ฉันประสบปัญหาในการส่งไฟล์ที่เก็บไว้ในฐานข้อมูลกลับไปยังผู้ใช้ใน ASP.NET MVC สิ่งที่ฉันต้องการคือมุมมองที่แสดงรายการลิงก์สองรายการลิงก์หนึ่งเพื่อดูไฟล์และปล่อยให้ mimetype ที่ส่งไปยังเบราว์เซอร์พิจารณาว่าควรจัดการอย่างไรและอีกลิงค์บังคับให้ดาวน์โหลด หากฉันเลือกที่จะดูไฟล์ที่เรียกว่าSomeRandomFile.bakและเบราว์เซอร์ไม่มีโปรแกรมที่เกี่ยวข้องในการเปิดไฟล์ประเภทนี้แสดงว่าฉันไม่มีปัญหากับการเริ่มต้นกับพฤติกรรมการดาวน์โหลด อย่างไรก็ตามถ้าฉันเลือกที่จะดูไฟล์ที่เรียกว่าSomeRandomFile.pdfหรือSomeRandomFile.jpgฉันต้องการให้เปิดไฟล์ แต่ฉันต้องการเก็บลิงค์ดาวน์โหลดไว้ด้านข้างเพื่อให้ฉันสามารถบังคับให้พรอมต์ดาวน์โหลดโดยไม่คำนึงถึงประเภทไฟล์ มันสมเหตุสมผลหรือไม่ ฉันเหนื่อย FileStreamResultแล้วมันใช้งานได้กับไฟล์ส่วนใหญ่คอนสตรัคเตอร์ไม่ยอมรับชื่อไฟล์ตามค่าเริ่มต้นดังนั้นไฟล์ที่ไม่รู้จักจะถูกกำหนดชื่อไฟล์ตาม URL (ซึ่งไม่ทราบว่าจะให้นามสกุลตามประเภทเนื้อหา) หากฉันบังคับชื่อไฟล์ด้วยการระบุฉันจะเสียความสามารถของเบราว์เซอร์ในการเปิดไฟล์โดยตรงและฉันได้รับพรอมต์ดาวน์โหลด มีคนอื่นพบสิ่งนี้หรือไม่? นี่คือตัวอย่างของสิ่งที่ฉันได้ลองมา //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 …