سؤال

ما هي أفضل طريقة لتنفيذ إجراء التنزيل من صفحة الويب باستخدام 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 حل المشكلة فقط.

ملاحظة:لست متأكدًا مما إذا كانت هذه هي أفضل ممارسة ولكن تم حل المشكلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top