سلام
من فایلم رو در یک سرور دیگر قرار دادم که این سرور به من لینک دانلود داده است
حالا من می خوام کاربران سایتم با کلیک روی یک دکمه بتونند فایل رو دانلود کنند؟
خب شما هم لینک داننلود را قرار بدید تا از همون آدرس بتونند دانلود کنند
شاید من منظورتون رو کامل متوجه نشدم
چطور لینک دانلود اختصاصی تولید کنم؟
من برای درست کردن آدرس دانلود اختصاصی این کار رو انجام دادم:
آدرس یه صفحه رو به کاربر میدم که دارای کوئری استرینگ شماره کاربر و شماره محصول است بعد تایید میکنم که کاربر چنین محصولی را خریده است یا نه اگر خریده بود به طور مستقیم دانلود فایل شروع بشه. برای این کار از کد زیر استفاده کردم:
string filePath = "filepath"; Response.ContentType = ContentType; Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(filePath)); Response.WriteFile(filePath); Response.End();
حالا اگر فایل من در یک سرور آپلود فایل باشه باید چیکار کنم.یعنی به جای filepath چی بنویسم .
چرا فایل را Write کردید ؟
چرا از تگ a استفاده نکردید و در href آدرس فایل را قرار ندادید ؟
من اول می خوام کاربر به صفحه ای که من در نظر گرفتم برن برای تایید اطلاعات یعنی من داخل تابع لود صفحه با گرفتن query[id] تایید اعتبار می کنم اگر درست بود دانلود شروع میشه و دیگه کاربر نیازی نیست روی لینکی دانلود کنه.
if(اگر کاربر این محصول را خریده بود ) { string filePath = "~/Portals/0/bootstrap/1.JPG"; Response.ContentType = ContentType; Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(filePath)); Response.WriteFile(filePath); Response.End(); }
من اگر مستقیما آدرس فایل رو به کاربر بدم می تونه از آدرس در هر زمانی استفاده کنه یا به افراد بده من با اینکار می تونم تعداد دانلود کاربر رو محدود کنم
درسته
خب میتونید در filepath مسیر فایل اصلی را قرار دهید با استفاده از آدرس کامل
مشکل من اینه که فایل من در یه سرور دیگه هست و آدرس اینترنتی رو دارم
همون آدرس اینترنتی را قرار دهید
اگر بجای filePath آدرس اینترنتی رو بزارم ارور زیر رو میده :
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http:/localhost:2012/Portals/0/bootstrap/1.JPG"); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream file = response.GetResponseStream();
ارور میده :
لینک اصلی را قرار دادید ؟
با LocalHost نمیشه
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://barnamenevisan.org/Images/Users/Thumb/6818a7a850db4365911586af834a36de.jpg"); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream file = response.GetResponseStream();
الان ارور نمیده ولی عکس دانلود نمیشه؟!
File رو باید Write کنید
اینکار رو کردید ؟
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://barnamenevisan.org/Images/Users/Thumb/6818a7a850db4365911586af834a36de.jpg"); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream file = response.GetResponseStream(); StreamReader read = new StreamReader(file); string s = read.ReadToEnd(); Response.ContentType = ContentType; Response.WriteFile(?????????????????////); Response.End();
به جای علامت سوال چی بزارم
using (var client = new WebClient()) { var buffer = client.DownloadData("http://barnamenevisan.org/Images/Users/Thumb/6818a7a850db4365911586af834a36de.jpg"); Response.AppendHeader("Content-Disposition", "attachment;filename=6818a7a850db4365911586af834a36de.jpg"); Response.Clear(); Response.OutputStream.Write(buffer, 0, buffer.Length); Response.Flush(); }
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)