PDA

View Full Version : کمک در خصوص پوشش آدرس اینترنتی



zapatolap
دوشنبه 17 تیر 1392, 19:05 عصر
سلام خدمت دوستان و توسعه دهندگان محترم
مشکلی که دارم را ساده بیان می کنم
ببینید من یک سری فایل پی دی اف داخل پوشه ای در سایتم دارم. آدرس واقعی این فایل ها به شکل زیر است:
http://sitename.com/files/1.pdf
http://sitename.com/files/2.pdf
http://sitename.com/files/3.pdf
...
به دلایلی نمی خواهم بطور مستقیم آدرس این فایل ها را در اختیار کاربرانم قراردهم. در واقع آنها خریدنی هستند. می خواهم به جای آدرس های فوق آدرسی به شکل زیر نشان دهم:
http://sitename.com/sa78sa9ad8f223rrjj2rdfgdfs43sdu
, ....
می خواهم با کلیک بروی آدرس فوق فایل اصلی دانلود شود بدون اینکه کاربر آدرس اصلی را متوجه شود
دو راهی که بلدم یکی response.redirect هست که متاسفانه آدرس اصلی را لو می دهد و server.transfer هم که آدرس داخلی است.
دوستان در این زمینه اگر راهکاری دارند شرمنده می کنند
ممنون

General-Xenon
دوشنبه 17 تیر 1392, 22:28 عصر
سلام خدمت دوستان و توسعه دهندگان محترم
مشکلی که دارم را ساده بیان می کنم
ببینید من یک سری فایل پی دی اف داخل پوشه ای در سایتم دارم. آدرس واقعی این فایل ها به شکل زیر است:
http://sitename.com/files/1.pdf
http://sitename.com/files/2.pdf
http://sitename.com/files/3.pdf
...
به دلایلی نمی خواهم بطور مستقیم آدرس این فایل ها را در اختیار کاربرانم قراردهم. در واقع آنها خریدنی هستند. می خواهم به جای آدرس های فوق آدرسی به شکل زیر نشان دهم:
http://sitename.com/sa78sa9ad8f223rrjj2rdfgdfs43sdu
, ....
می خواهم با کلیک بروی آدرس فوق فایل اصلی دانلود شود بدون اینکه کاربر آدرس اصلی را متوجه شود
دو راهی که بلدم یکی response.redirect هست که متاسفانه آدرس اصلی را لو می دهد و server.transfer هم که آدرس داخلی است.
دوستان در این زمینه اگر راهکاری دارند شرمنده می کنند
ممنون

سلام دوست من . برای این کار باید از یک Page واسطه و کد Query String استفاده کنی که البته این کار باعث کند شدن پروژه می شه . اما این کد کمکت خواهد کرد . موفق باشی..
یک فایل از نوع Generic Handler ایجاد کن : Download.ashx
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "application/pdf";
string _url = "";
string _q = context.Request.QueryString["c"].ToString();
switch (_q)
{
case "a": _url = "Linke Mostaghime Pdf File"; break;
}
System.IO.MemoryStream ms = new System.IO.MemoryStream(new System.Net.WebClient().DownloadData(_url));
context.Response.BinaryWrite(ms.ToArray());
}
موفق باشی . اگر کد مورد داشت خبرم کن

zapatolap
سه شنبه 18 تیر 1392, 00:00 صبح
من دقیقا متوجه نشدم کد بالا چه میکنه؟ در واقع فایل را از آدرس میخونه و همونجا تولید میکنه؟ متغییر _q و url چه هستند؟ تابع ProcessRequest کجا فراخوانی میشه؟ متغییر درونش (HttpContext context) چه هست و با چی مقدار دهی میشه؟ این وسط میخوام فایل به اسم جدیدی برای کاربر دانلود بشه اون کجاس؟ ممنون