كيفية تنفيذ تنزيل ملف في asp.net
سؤال
ما هي أفضل طريقة لتنفيذ إجراء التنزيل من صفحة الويب باستخدام asp.net 2.0؟
يتم إنشاء ملفات السجل الخاصة بالإجراء في دليل يسمى [Application Root]/Logs.لدي المسار الكامل وأريد توفير زر، والذي عند النقر عليه سيتم تنزيل ملف السجل من خادم IIS إلى أجهزة الكمبيوتر المحلية للمستخدمين.
المحلول
هل هذا يساعد:
http://www.west-wind.com/weblog/posts/76293.aspx
Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition","attachment; filename=logfile.txt");
Response.TransmitFile( Server.MapPath("~/logfile.txt") );
Response.End();
تعتبر Response.TransmitFile الطريقة المقبولة لإرسال الملفات الكبيرة، بدلاً من Response.WriteFile.
نصائح أخرى
http://forums.asp.net/p/1481083/3457332.aspx
string filename = @"Specify the file path in the server over here....";
FileInfo fileInfo = new FileInfo(filename);
if (fileInfo.Exists)
{
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + fileInfo.Name);
Response.AddHeader("Content-Length", fileInfo.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.Flush();
Response.TransmitFile(fileInfo.FullName);
Response.End();
}
تحديث:
الرمز الأولي
Response.AddHeader("Content-Disposition", "inline;attachment; filename=" + fileInfo.Name);
يحتوي على "مضمن؛ مرفق" أيقيمتان لترتيب المحتوى.
لا أعرف متى بدأت بالضبط، ولكن في فايرفوكس فقط اسم الملف الصحيح لم يظهر.يظهر مربع تنزيل الملف مع اسم صفحة الويب وامتدادها (اسم الصفحة.aspx).بعد التنزيل، إذا قمت بإعادة تسميته مرة أخرى إلى الاسم الفعلي؛يتم فتح الملف بنجاح.
حسب هذه الصفحة, ، يعمل على يخدم اولا من يأتي اولا.تغيير القيمة إلى attachment
حل المشكلة فقط.
ملاحظة:لست متأكدًا مما إذا كانت هذه هي أفضل ممارسة ولكن تم حل المشكلة.