سؤال

وآمل أن يكون هذا هو سؤال سريع ويحدوني الأمل. لست بحاجة لكتابة بعض التقارير ومن ثم يكون مطالبة المستخدم لحفظه لله / لها الجهاز المحلي. آخر مرة فعلت ذلك كتبت ملف إلى خادم الويب ومن ثم إرسالها إلى العميل عبر وجوه Response.

لإنشاء على خادم

            TextWriter tw = new StreamWriter(filePath);

ولإرسالها إلى العميل

           page.Response.WriteFile(path);

والسؤال هو، هل هناك طريقة لتخطي كتابة ملف فعلي للخادم الويب ويسير في الاتجاه الصحيح من كائن التي تمثل المستند إلى الرد؟

هل كانت مفيدة؟

المحلول

هل يمكن استخدام Response.ContentType مثل هذا

Response.ContentType = "text/plain";
Response.OutputStream.Write(buffer, 0, buffer.Length);
Response.AddHeader("Content-Disposition", "attachment;filename=yourfile.txt");

وهذا بالطبع يعمل إذا كنت تريد أن تكتب ملف نصي. في حال كنت ترغب في إرسال .DOC على سبيل المثال قمت بتغيير ContentType إلى "تطبيق / مايكروسوفت وورد" الخ ...

نصائح أخرى

ويمكنك.

وجرب هذا:

Table oTable = new Table();
//Add data to table.

Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", "attachment;filename="test.xls"");
Response.Charset = "";
this.EnableViewState = false;
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.Html32TextWriter oHtmlTextWriter = new System.Web.UI.Html32TextWriter(oStringWriter);
0Table.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
Response.End();

وهذا سيعطي الفوري المستخدم لفتح أو حفظ ملف test.xls. وبالمثل يمكن أن توفر الأشياء ASP.NET أخرى بدلا من الجدول.

نعم.

page.Response.WriteFile(yourData, 0, yourData.Length);

والاجابة الدقيقة على السؤال يعتمد على كيف نظمت التقرير الخاص بك (أي ما هو "كائن" كنت في اشارة الى). إذا كان لديك سلسلة واحدة، يمكنك استخدام Response.Write لمجرد كتابته. إذا كنت في حاجة الى TextWriter، Response.Output هو ما تريد - وبهذه الطريقة يمكنك تخطي الكتابة إلى القرص ثم استخدام WriteFile. أيضا، إذا حدث المحتوى الخاص بك ليكون ثنائي، يمكنك استخدام Response.OutputStream لذلك.

وأنت قد تحتاج أيضا إلى تعيين Response.AddHeader ( "ترتيب المحتوى"، "مرفق")، إذا كنت تريد المستخدم لرؤية الحوار حفظ الملف. ومع ذلك، يتم ترتيب المحتوى لم تحترم بالضرورة، لذلك فتحت المستخدم قد لا يزال الحصول على التقرير مباشرة في المتصفح. تذكر لوضع رؤوس قبل الانتاج المحتوى الفعلي!

وأيضا، اعتمادا على شكل التقرير، قد ترغب في تعيين Response.ContentType إلى شيء مناسب مثل نص / عادي، النص / CSV أو ما إلى ذلك. يتم سرد أنواع التمثيل الصامت الصحيحة في الموقع IANA .

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