مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

mohammad100

عضویت از 1392/08/27

ایجاد دکمه دانلود برای فایلی که در یک سایت یاسرور دیگر قرار دارد

  • پنجشنبه 3 تیر 1395
  • 14:58
تشکر میکنم

سلام

من فایلم رو در یک سرور دیگر قرار دادم که این سرور به من لینک دانلود داده است 

حالا من می خوام کاربران سایتم با کلیک روی یک دکمه بتونند فایل رو دانلود کنند؟

پاسخ های این پرسش

تعداد پاسخ ها : 17 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • پنجشنبه 3 تیر 1395
  • 16:14

خب شما هم لینک داننلود را قرار بدید تا از همون آدرس بتونند دانلود کنند

شاید من منظورتون رو کامل متوجه نشدم

کاربر سایت

mohammad100

عضویت از 1392/08/27

  • پنجشنبه 3 تیر 1395
  • 20:27

چطور لینک دانلود اختصاصی تولید کنم؟

کاربر سایت

mohammad100

عضویت از 1392/08/27

  • پنجشنبه 3 تیر 1395
  • 23:16

من برای درست کردن آدرس دانلود اختصاصی این کار رو انجام دادم:

آدرس یه صفحه رو به کاربر میدم که دارای کوئری استرینگ شماره کاربر و شماره محصول است بعد تایید میکنم که کاربر چنین محصولی را خریده است یا نه اگر خریده بود به طور مستقیم دانلود فایل شروع بشه. برای این کار از کد زیر استفاده کردم:

        string filePath = "filepath";
        Response.ContentType = ContentType;
        Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(filePath));
        Response.WriteFile(filePath);
        Response.End();

حالا اگر فایل من در یک سرور آپلود فایل باشه باید چیکار کنم.یعنی به جای filepath چی بنویسم .

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 4 تیر 1395
  • 07:09

چرا فایل را Write کردید ؟

چرا از تگ a استفاده نکردید و در href آدرس فایل را قرار ندادید ؟

کاربر سایت

mohammad100

عضویت از 1392/08/27

  • جمعه 4 تیر 1395
  • 13:19

من اول می خوام کاربر به صفحه ای که من در نظر گرفتم برن برای تایید اطلاعات یعنی من داخل تابع لود صفحه با گرفتن 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();
            
        }

 

کاربر سایت

mohammad100

عضویت از 1392/08/27

  • جمعه 4 تیر 1395
  • 13:25

من اگر مستقیما آدرس فایل رو به کاربر بدم می تونه از آدرس در هر زمانی استفاده کنه یا به افراد بده من با اینکار می تونم تعداد دانلود کاربر رو محدود کنم

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 4 تیر 1395
  • 13:31

درسته

خب میتونید در filepath مسیر فایل اصلی را قرار دهید با استفاده از آدرس کامل

کاربر سایت

mohammad100

عضویت از 1392/08/27

  • جمعه 4 تیر 1395
  • 13:38

 مشکل من اینه که فایل من در یه سرور دیگه هست و آدرس اینترنتی رو دارم  

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 4 تیر 1395
  • 13:45

همون آدرس اینترنتی را قرار دهید

کاربر سایت

mohammad100

عضویت از 1392/08/27

  • جمعه 4 تیر 1395
  • 13:55

اگر بجای filePath آدرس اینترنتی رو بزارم ارور زیر رو میده :

'http:/localhost:2012/Portals/0/bootstrap/1.JPG' is not a valid virtual path.

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 4 تیر 1395
  • 13:59
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http:/localhost:2012/Portals/0/bootstrap/1.JPG");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream file = response.GetResponseStream();

 

کاربر سایت

mohammad100

عضویت از 1392/08/27

  • جمعه 4 تیر 1395
  • 14:06

ارور میده :

Invalid URI: The Authority/Host could not be parsed.

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 4 تیر 1395
  • 14:10

لینک اصلی را قرار دادید ؟

با LocalHost نمیشه

کاربر سایت

mohammad100

عضویت از 1392/08/27

  • جمعه 4 تیر 1395
  • 14:18
 HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://barnamenevisan.org/Images/Users/Thumb/6818a7a850db4365911586af834a36de.jpg");
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        Stream file = response.GetResponseStream();

الان ارور نمیده ولی عکس دانلود نمیشه؟!

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 4 تیر 1395
  • 14:22

File رو باید Write کنید

اینکار رو کردید ؟

کاربر سایت

mohammad100

عضویت از 1392/08/27

  • جمعه 4 تیر 1395
  • 14:50
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();

به جای علامت سوال چی بزارم

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 4 تیر 1395
  • 15:53
     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();
            }

 

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)