PDA

View Full Version : آپلودر جهت آپلود فایل ها در اینترنت (هاست و ftp)



sadeghjun
چهارشنبه 16 مرداد 1392, 02:44 صبح
سلام
با توجه به اینکه سوالات زیادی در مورد روش آپلود فایل در تالار وجود دارخ تصمیم گرفتن یه پروژه جهت آموزش این کار قرار بدم. در این برنامه شما آدرس سرور رو تعیین می کنید طبق مثالی که در بالای آن نشان داده شده و User و Pass اون رو هم وارد میکنید سپس با کلیک روی Update و انتخاب فایل اگر آدرس درست باشد شروع به آپلود می کند و پیشرفت کار رو هم در progressBar نشان میدهد.

تصاویر برنامه:


108662

108664


اگه سوال و یا پیشنهادی داشتید درخدمتم.
ممنون

سورس پروژه:
108663

sadeghjun
سه شنبه 29 مرداد 1392, 21:14 عصر
سلام
کسی نظری نداره؟؟

juza66
سه شنبه 29 مرداد 1392, 22:27 عصر
تشکر دوست عزیز

کاش اموزشش هم بذاری مثه برنامه دانلودر خوبتون واقعا خیلی از مشکلاتم حل کرد؛ اگه برای این که واقعا خیلی نیازشونه اموزش بدی ممنونت میشم

juza66
سه شنبه 29 مرداد 1392, 22:29 عصر
تشکر دوست عزیز

کاش اموزشش هم بذاری مثه برنامه دانلودر خوبتون واقعا خیلی از مشکلاتم رو حل کرد؛ اگه برای این هم اموزش بذاری ممنونت میشم

sadeghjun
چهارشنبه 30 مرداد 1392, 00:28 صبح
سلام
پروژه بسیار ساده نوشته شده است.ابتدا کد کامل پروژه رو میذارم:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net;

namespace Upload_to_FTP
{
public partial class Form1 : Form
{
WebClient webClient = new WebClient();
OpenFileDialog fd = new OpenFileDialog();
long fileSize;

public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
webClient.UploadFileCompleted += new UploadFileCompletedEventHandler(Completed);
webClient.UploadProgressChanged += new UploadProgressChangedEventHandler(ProgressChanged) ;
try
{
if (fd.ShowDialog() == DialogResult.OK)
{
UploadBTN.Enabled = false;
webClient.UploadFileTaskAsync(new Uri("ftp://" + UsernameTB.Text + ":" + PassTB.Text + "@" + AddressTB.Text + fd.SafeFileName), fd.FileName);
}
}
catch (Exception ex)
{ MessageBox.Show(ex.Message); }
}
private void Completed(object sender, UploadFileCompletedEventArgs e)
{
MessageBox.Show("Upload File completed!");
UploadBTN.Enabled = true;
}

private void ProgressChanged(object sender, UploadProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
label4.Text = e.ProgressPercentage.ToString() + " %";
}
}
}

sadeghjun
چهارشنبه 30 مرداد 1392, 00:46 صبح
آموزش:
خوب ابتدا یک شیء از نوع WebClient می سازیم:
WebClient webClient = new WebClient();

و همچنین شی ای از نوع OpenFileDialog جهت گرفتن آدرس فایل در PC:
OpenFileDialog fd = new OpenFileDialog();

حال اگه روی دکمه Upload (در اینجا Button1) وارد تابع زیر میشه:
private void button1_Click(object sender, EventArgs e)
{
webClient.UploadFileCompleted += new UploadFileCompletedEventHandler(Completed);
webClient.UploadProgressChanged += new UploadProgressChangedEventHandler(ProgressChanged) ;
try
{
if (fd.ShowDialog() == DialogResult.OK)
{
System.IO.FileInfo f = new System.IO.FileInfo(fd.FileName);
fileSize = f.Length / (1024 * 1024);
// ftp://u222501965:123456789@sadeghjun.gigblog.ir/MyFolder/Save.pdf
UploadBTN.Enabled = false;
webClient.UploadFileTaskAsync(new Uri("ftp://" + UsernameTB.Text + ":" + PassTB.Text + "@" + AddressTB.Text + fd.SafeFileName), fd.FileName);
}
}
catch (Exception ex)
{ MessageBox.Show(ex.Message); }
}

تو خط اول میگیم هروقت آپلود تموم شد وارد تابع Completed شو و دستورات آن را اجرا کن و در خط دوم میگه هر موقع تغییری در پروسه آپلود رخ داد ، وارد روتین ProgressChanged شو.
سپس دکمه Upload رو غیر فعال کرده تا آپلود تمام شود. زمانی که فایل دیالوگ OK میشود می توانیم فرایند آپلود رو آغاز کنیم. با استفاده از شیء webClient که ساخته بودیم فایل رو به صورت زیر آپلود می کنیم:
webClient.UploadFileTaskAsync(new Uri("ftp://" + UsernameTB.Text + ":" + PassTB.Text + "@" + AddressTB.Text + fd.SafeFileName), fd.FileName);
دقت کنید که من سروری که فایلم رو درونش آپلود میکنم ftp هست بنابراین در ابتدای آدرس Url من "ftp://" رو قرار دادم. ولی در صورتی که سرور شما Http بود در ابتدا باید "http://" قرار دهید.
و با استفاده از اطلاعات Username و password و آدرس سرور ، فایل شورع با آپلود می کند.
هر وقت دانلود تمام شد در تابع Completed لیبل وضعیت رو تغییر میده و هرموقع که پروسه دانلود تغییر میکند progressBar رو تغییر میدهد.
تمام
اگه سوالی بود در خدمتم

krasus
دوشنبه 09 دی 1392, 15:18 عصر
سلام
من برنامه شما رو دان کردم و موقعی که
من یه پروژ جدید درست کردم و کدهای شما رو توش کپی کردم. فایل رو که آپلود کردم پیغام Upload File completed! رو بهم نشون داد ولی فایلی آپلود نشده بود.



WebClient webClient = new WebClient();
OpenFileDialog fd = new OpenFileDialog();
long fileSize;

private void button1_Click(object sender, EventArgs e)
{
webClient.UploadFileCompleted += new UploadFileCompletedEventHandler(Completed);
webClient.UploadProgressChanged += new UploadProgressChangedEventHandler(ProgressChanged) ;
try
{
if (fd.ShowDialog() == DialogResult.OK)
{
UploadBTN.Enabled = false;
webClient.UploadFileAsync(new Uri(UsernameTB.Text + ":" + PassTB.Text + "@" + AddressTB.Text + fd.SafeFileName), fd.FileName);
}
}
catch (Exception ex)
{ MessageBox.Show(ex.Message); }
}

private void Completed(object sender, UploadFileCompletedEventArgs e)
{
MessageBox.Show("Upload File completed!");
UploadBTN.Enabled = true;
}



خود برنامه شما رو که اجرا کردم و بعد از انتخاب فایل از فایل دیالوگ و زدن دکمه ok بهم پیغام زیر رو داد.

مشکل من از کجاست؟

forodo
دوشنبه 09 دی 1392, 23:30 عصر
منم برنامه شما رو دانلود کردم و دقیقاْ همین مشکل جناب krasus رو دارم.
لطفاْ راهنمایی کنید
با تشکر

barnamenevisjavan
سه شنبه 10 دی 1392, 22:16 عصر
باید Username مربوط به سی پنل و پسورد مربوط به سی پنل رو وارد کنید
در ادرس هاست هم باید احتمال زیاد به این صورت باشه
xxx.ir/public_html/test

sadeghjun
چهارشنبه 11 دی 1392, 00:26 صبح
سلام به همه
در سی پنل سایت و در بخش ftp-accounts شما به صورت زیر یه اکانت باید بسازید:


114668

پس همون آدرس رو باید وارد کنید (بدون ftp://) و همون یوزر و پسورد.
اینم تست مجدد:

114669

البته واسه بهتر شدنش دارم روش کار میکنم:


114670
اگه سوالی بود در خدمتم.