اتضح أنه أثناء تطوير مشروعنا (يتم تخزين الملفات في قاعدة البيانات)، تتم كتابة الملفات التي تم تنزيلها في شكل رؤوس http. كما يلي Response.Clear();
Response.Buffer = false;
Response.AppendHeader("Content-Disposition",attachment;filename="+HttpUtility.UrlEncode(fileWJNR.Rows[0]["WJM"].ToString(),System.Text.Encoding.UTF8));
Response.BinaryWrite(دفق البايت)؛
Response.End();
ومع ذلك، بعد نشر المشروع، عندما يتصفح المستخدم في IE6.0، سيتم اعتراضه وإغلاقه والخروج منه. في ذلك الوقت، استخدم زميلي نموذجًا منبثقًا، ثم "انقر للتنزيل" في النموذج المنبثق، حتى لا يتم اعتراضه.
لقد جربت حلاً أكثر مباشرة، وهو إنشاء ملف مؤقت أولاً عند النقر فوقه، ثم الارتباط بالملف المؤقت، أي أنه سينبثق مربع حوار لتنزيل الملف أو فتحه. الكود بسيط للغاية:
string fileName = "اسم الملف" // استخدم معرف الملف
سلسلة tempFilePath = Request.PhysicalPath؛
tempFilePath = tempFilePath.Substring(0,tempFilePath.LastIndexOf("\"));
tempFilePath += " \temp\ " + fileName;
,
FileMode.OpenOrCreate,FileAccess.ReadWrite);
{
byte[] docBody = (byte[])fileWJNR.Rows[0]["WJNR"]; //Conversion
file.Write(docBody, 0, docBody.Length);
file.Close();
Response.Redirect("temp\" + fileName);
}
يمسك
{
file.Close();
}