ปรากฎว่าในระหว่างการพัฒนาโครงการของเรา (ไฟล์จะถูกเก็บไว้ในฐานข้อมูล) ไฟล์ที่ดาวน์โหลดจะถูกเขียนในรูปแบบของส่วนหัว http ดังต่อไปนี้ Response.Clear();
Response.Buffer = เท็จ;
Response.AppendHeader("การจัดการเนื้อหา", "ไฟล์แนบ"; filename="+HttpUtility.UrlEncode(fileWJNR.Rows[0]["WJM"].ToString(),System.Text.Encoding.UTF8));
Response.BinaryWrite (สตรีมไบต์);
Response.End();
อย่างไรก็ตาม หลังจากปรับใช้โปรเจ็กต์แล้ว เมื่อผู้ใช้เรียกดูใน IE6.0 มันจะถูกดักจับและปิดและออก ในเวลานั้น เพื่อนร่วมงานของฉันใช้แบบฟอร์มป๊อปอัป จากนั้น "คลิกเพื่อดาวน์โหลด" ในแบบฟอร์มป๊อปอัป เพื่อไม่ให้ถูกดักฟัง
ฉันลองใช้วิธีแก้ปัญหาที่ตรงกว่านี้ ซึ่งก็คือสร้างไฟล์ชั่วคราวก่อนเมื่อคลิก จากนั้นจึงลิงก์ไปยังไฟล์ชั่วคราว นั่นคือการดาวน์โหลดไฟล์หรือกล่องโต้ตอบที่เปิดอยู่จะปรากฏขึ้น รหัสนั้นง่ายมาก:
string fileName = "file name" //use file id
สตริง tempFilePath = คำขอ PhysicalPath;
tempFilePath = tempFilePath.Substring(0,tempFilePath.LastIndexOf("\"));
tempFilePath += " \temp\ " + ชื่อไฟล์;
tempFilePath
,FileMode.OpenOrCreate,FileAccess.ReadWrite);
-
ไบต์ [] docBody = (ไบต์ []) fileWJNR.Rows [0] ["WJNR"]; // การแปลง
file.Write(docBody, 0, docBody.Length);
ไฟล์.ปิด();
Response.Redirect("temp\" + ชื่อไฟล์);
-
จับ
-
ไฟล์.ปิด();
-