ในแอปพลิเคชันของฉัน ฉันมีโครงสร้างโฟลเดอร์ที่คุณสามารถอัปโหลดไฟล์ทุกประเภท (jpg, PNG, pdf, txt ฯลฯ) คุณสามารถดาวน์โหลดไฟล์โดยตรงเป็นไฟล์หรือดูไฟล์ในเบราว์เซอร์ก็ได้
ในการแสดงไฟล์ในเบราว์เซอร์ ฉันใช้การกระทำของคอนโทรลเลอร์ดังต่อไปนี้:
public virtual ActionResult FileDisplay(int fileId, bool isFile)
{
var viewmodel = _presenter.GetDocumentDisplayViewModel(fileId, isFile);
return base.File(viewmodel.Data, viewmodel.MediaType);
}
ไฟล์จะแสดงในเบราว์เซอร์ดังนี้: https://i.stack.imgur.com/TXmTy.jpg
แท็บเบราว์เซอร์แสดงชื่อคอนโทรลเลอร์ของฉัน "FileDisplay" และ (สำหรับตัวอย่างนี้) ขนาดของรูปภาพ
คำถาม: ฉันจะแสดงชื่อไฟล์ในชื่อแท็บเบราว์เซอร์แทนชื่อคอนโทรลเลอร์ได้อย่างไร สิ่งนี้สำหรับไฟล์ทุกประเภท
1. ส่วนหัวการจัดการเนื้อหา
ฉันพบหลายโพสต์ที่พวกเขาบอกว่าจะเพิ่มส่วนหัว Content-Disposition ในการตอบกลับด้วยชื่อไฟล์:
แต่นี่ไม่ได้ผล
<แข็งแกร่ง>2. เพิ่มชื่อไฟล์ให้กับตัวสร้างไฟล์
return base.File(viewmodel.Data, viewmodel.MediaType, viewmodel.FileName);
หากฉันทำเช่นนี้ ไฟล์จะถูกดาวน์โหลดแทนที่จะแสดงในเบราว์เซอร์
<แข็งแกร่ง>3. ชื่อไฟล์ PDF
ฉันพบว่าบางครั้งชื่อแท็บเบราว์เซอร์ก็ถูกต้อง! หากฉันแสดงไฟล์ PDF ในเบราว์เซอร์ที่มีชื่อไฟล์ (ชื่อในคุณสมบัติ pdf ไม่ใช่ชื่อไฟล์) ชื่อเบราว์เซอร์นั้นถูกต้อง: https://i.stack.imgur.com/orAZSjpg
ใครสามารถช่วยฉันในเรื่องนี้?