PDA

View Full Version : سوال: دانلود صفحه جاری توسط کاربر در دات نت



shahab_ksh
پنج شنبه 02 خرداد 1387, 02:07 صبح
همین صفحه جاری رو در کامپیوترمون ذخیره کنیم یه دایرکتوری برای صفحه ایجاد میشه و فایلهای تصویری و ... درون اون قرار میگیرن


حالا چطور در دات نت صفحه حال حاظر رو به این شکل که گفتم اول ZIP کرد و بعد به مرورگر طرف فرستاد (فایلی در سرور ایجاد نشه حتی موقت)

یعنی می خام قابلیت دانلود صفحه رو به کاربر بدم

twelve
پنج شنبه 02 خرداد 1387, 02:43 صبح
صفحه aspx رو ؟

shahab_ksh
پنج شنبه 02 خرداد 1387, 03:03 صبح
صفحه aspx رو ؟

خیر خروجی رو فکر کنم کامل توضیح دادم

Alireza_Salehi
پنج شنبه 02 خرداد 1387, 07:02 صبح
با استفاده از HttpWebRequest و HttpWebResponse (در System.Net) صفحه مورد نظر رو دریافت کنید و در مرحله بعد باید فایل هایی که درون Response قرار دارند رو یکی یکی دانلود کنید. (همه این کارها بر روی RAM میتونه انجام بشه- MemoryStream)
و بعد همه رو zip کنید و با روش رایجی که برای دانلود از طریق کد وجود داره (Response.BinaryWrite) اون رو در اختیار کاربر قرار بدید.

http://www.west-wind.com/presentations/dotnetWebRequest/dotnetWebRequest.htm
http://www.c-sharpcorner.com/UploadFile/mahesh/WebRequestNResponseMDB12012005232323PM/WebRequestNResponseMDB.aspx

shahab_ksh
پنج شنبه 02 خرداد 1387, 14:42 عصر
در مرحله بعد باید فایل هایی که درون Response قرار دارند رو یکی یکی دانلود کنید. (همه این کارها بر روی RAM میتونه انجام بشه- MemoryStream)


لیست فایلهای موجود صفحه رو از کجا بدست بیارم ؟

وقتی دانلود کنیم چطور



(همه این کارها بر روی RAM میتونه انجام بشه- MemoryStream)

Alireza_Salehi
پنج شنبه 02 خرداد 1387, 15:44 عصر
روش روتین اینه که یک دایرکتوری برای فایل ها می سازید، بعد یک فایل htm ، خالا هر فایلی که دانلود شد در این دایکتوری قرار میگیره ولی باید آدرسی که در فایل htm ثبت می کنید نسبی و بر اساس محل قرار گرفتن دایرکتوری فایل ها و فایل htm باشه.

همه چیز در response وجود داره (خروجی HTML) باید دنبال src بگردید و بعد از تشخیص نوع فایل (css, script,img,...) ابتدا فایل رو دانلود کنید و بعد ذخیره کنید وهمزمان آدرس ها رو اصلاح کنید.

شاید کامپوننت آماده هم باشه، جستجو کنید.

chaalesh
پنج شنبه 02 خرداد 1387, 23:58 عصر
من یه فزولی بکنم ؟
برای چه منظوری این کار را انجام میدید ؟ چه مزیتی یا چه سرویسی ؟ یا ....

shahab_ksh
جمعه 03 خرداد 1387, 01:35 صبح
برای چه منظوری این کار را انجام میدید ؟ چه مزیتی یا چه سرویسی ؟ یا ....


کار Save As با زدن یک دکمه

shahab_ksh
جمعه 03 خرداد 1387, 01:37 صبح
روش روتین اینه که یک دایرکتوری برای فایل ها می سازید، بعد یک فایل htm ، خالا هر فایلی که دانلود شد در این دایکتوری قرار میگیره ولی باید آدرسی که در فایل htm ثبت می کنید نسبی و بر اساس محل قرار گرفتن دایرکتوری فایل ها و فایل htm باشه.

همه چیز در response وجود داره (خروجی HTML) باید دنبال src بگردید و بعد از تشخیص نوع فایل (css, script,img,...) ابتدا فایل رو دانلود کنید و بعد ذخیره کنید وهمزمان آدرس ها رو اصلاح کنید.



فکر نمی کنم با این کار عملی باشه فرض کنید 100 نفر با هم درخواست دانلود صفحه بدن همه چی قاتی میشه

Alireza_Salehi
جمعه 03 خرداد 1387, 09:40 صبح
هیچ چی قاطی نمی شه!

برای این که قضیه رو ساده تر ببینید:
فرض می کنیم کاربر بر روی کلید دانلود کلیک می کند و مرحله به مرحله پیش میریم:
1.ابتدا با استفاده از HttpWebRequest و HttpWebResponse صفحه مورد نظر را بدست می آوریم.
2.یک GUID میسازیم و یک پوشه به این نام میسازیم.
3.با فرض این که نام صفحه MyPage باشد یک فایل htm به نام MyPage.htm و یک پوشه به نام MyPage_Files درون پوشه ای که در ابتدا ساخته بودیم می سازیم.
4. حالا درون Response که در مرحله یک بدست آوردیم میگردیم و هر فایلی که پیدا کردیم دانلود می کنیم و به پوشه MyPage_Files انتقال می دیم و آدرسش رو در Response اصلاح می کنیم. (چطور دنبال فایلها بگردیم: http://www.developer.com/net/csharp/article.php/10918_2230091_1)
5.در آخر هم Response اصلاح شده را در MyPage.htm ذخیره می کنیم.
6.حالا همه پوشه ای که در مرحله 2 ساختیم رو zip می کنیم و به عنوان یک فایل به کاربر میدیم.

این کلیت کار ، حالا صد جور بهینه سازی و ... میشه رو این روش انجام داد. مثلا محدودیت زمانی در نظر بگیریم تا این کار هر دفعه انجام نشه مثل Cache.

برای اون قسمت جستجو در Response هم اگر بگردی حتما ابزارهایی پیدا خواهی کرد.

اون قسمت هایی که قاطی میشه رو توضیح بدید.