เส้นทางการดาวน์โหลดถูกซ่อนไว้โดยการส่ง ID ในฐานข้อมูล จากนั้นอ่านเส้นทางในฐานข้อมูลผ่าน ID ที่ส่งไปในหน้าอื่น
1. วิธีการที่ใช้ใน c# (ต้องใช้โค้ด .ASPX.CS เท่านั้น)
string sel_sql="เลือก FileVisualPath จาก TabMailAttachFiles โดยที่ FileID="+Request.QueryString[
"destFileName"].ToString(); // string destFileName = Request.QueryString["destFileName"]!=null?Request.QueryString["destFileName" ]:"";
สตริง destFileName=ROA.Components.fune_commerce.Execad(sel_sql).Tables[0].Rows[0][0].ToString();
destFileName = Server.MapPath(".")+destFileName;
destFileName = Server.UrlDecode(destFileName);
ถ้า (File.Exists (destFileName))
-
FileInfo fi = FileInfo ใหม่ (destFileName);
การตอบสนอง.Clear();
Response.ClearHeaders();
Response.Buffer = เท็จ;
//Response.AppendHeader("Content-Disposition", "attachment; filename =" +HttpUtility.UrlEncode(Path.GetFileName(destFileName),System.Text.Encoding.Default));
Response.AppendHeader("การจัดการเนื้อหา", "สิ่งที่แนบมา; filename =" +HttpUtility.UrlEncode(Path.GetFileName(destFileName),System.Text.Encoding.UTF8));
Response.AppendHeader("ความยาวเนื้อหา",fi.Length.ToString());
Response.ContentType = "แอปพลิเคชัน / octet-stream";
Response.WriteFile (destFileName);
การตอบสนองฟลัช();
การตอบสนองสิ้นสุด();
-
อื่น
-
Response.Write("<script langauge=javascript>alert('File is not existing!');history.go(-1);</script>");
การตอบสนองสิ้นสุด();
-
2. วิธีการนำไปใช้ใน ASP
<!--#include file="conn.asp" -->
-
Response.Buffer = จริง
การตอบสนองชัดเจน
URL สลัว
หรี่ fso, fl, flsize
สลัวDname
หรี่ objStream,ContentType,flName,isre,url1
'****************************************** ถูกส่งผ่านเมื่อเรียกไฟล์ดาวน์โหลด ชื่อ
m_ID=trim(request.QueryString("ID"))
ตั้ง rs=Server.CreateObject("adodb.recordset")
sql="select * จาก dataview โดยที่ xsf=true และ id="&m_ID
rs.open sql,conn,1,1
ถ้าไม่ใช่ rs.eof แล้ว
Dname=rs("เส้นทาง")
อื่น
Response.Write("ไม่พบ")
การตอบกลับสิ้นสุด
สิ้นสุดถ้า
rs.close:set rs=ไม่มีอะไร
'************************************************ * ****************
ถ้า Dname<>"" แล้ว
'******************************ไดเรกทอรีเซิร์ฟเวอร์ที่เก็บไฟล์ที่ดาวน์โหลดไว้
url=Server.MapPath(ชื่อ)
อื่น
Response.Write("ไม่พบ")
การตอบกลับสิ้นสุด
สิ้นสุดถ้า
ตั้งค่า fso=Server.CreateObject("Scripting.FileSystemObject")
ตั้งค่า fl=fso.getfile(url)
flsize=fl.size
flName=fl.ชื่อ
ตั้ง fl=ไม่มีอะไร
ตั้งค่า fso=ไม่มีอะไร
ตั้ง objStream = Server.CreateObject("ADODB.Stream")
objStream.เปิด
objStream.Type = 1
objStream.LoadFromFile URL
เลือกกรณี lcase(Right(flName, 4))
กรณี ".asf"
ContentType = "วิดีโอ/x-ms-asf"
กรณี ".avi"
ContentType = "วิดีโอ/avi"
กรณี ".doc"
ContentType = "แอปพลิเคชัน/msword"
กรณี ".zip"
ContentType = "แอปพลิเคชัน/zip"
กรณี ".xls"
ประเภทเนื้อหา = "application/vnd.ms-excel"
กรณี ".gif"
ประเภทเนื้อหา = "รูปภาพ/gif"
ตัวพิมพ์ ".jpg", "jpeg"
ประเภทเนื้อหา = "รูปภาพ/jpeg"
กรณี ".bmp"
ContentType = "รูปภาพ/bmp"
กรณี ".ppt"
ContentType = "application/vnd.ms-powerpoint"
กรณี ".mdb"
ContentType = "แอปพลิเคชัน/x-msaccess"
กรณี ".wav"
ContentType = "เสียง/wav"
กรณี ".mp3"
ประเภทเนื้อหา = "เสียง/mpeg3"
กรณี ".mpg", "mpeg"
ContentType = "วิดีโอ/mpeg"
กรณี ".rtf"
ContentType = "แอปพลิเคชัน/rtf"
กรณี ".htm", "html"
ประเภทเนื้อหา = "ข้อความ/html"
กรณี ".txt"
ContentType = "ข้อความ/ธรรมดา"
กรณีอื่น
ContentType = "แอปพลิเคชัน/octet-สตรีม"
สิ้นสุดการเลือก
Response.AddHeader "การจัดการเนื้อหา", "ไฟล์แนบ; filename=" & flName
Response.AddHeader "ความยาวเนื้อหา", flsize
Response.Charset = "UTF-8"
Response.ContentType = ContentType
Response.BinaryWrite objStream อ่าน
การตอบสนองฟลัช
การตอบสนองเคลียร์()
objStream ปิด
ตั้งค่า objStream = ไม่มีเลย
-
ที่มา: บล็อก "เมฆที่หายไปในท้องฟ้าสีคราม"