PDA

View Full Version : آموزش: نحوه آپلود فایل در سایت با برنامه ویندوزی سی شارپ + سورس و آموزش



Behnam6670
دوشنبه 26 آبان 1393, 11:23 صبح
سلام خدمت دوستان

یه آموزش کوچولو میخوام برا دوستانی که میخوان یه فایلی رو رو هاستشون آپلود کنن داشته باشم امیدوارم بدرد دوستان بخوره
البته این اموزش شاید ظاهرا کوچیک باشه ولی کاربردهای زیادی میتونه داشته باشه و شما میتونید حتی از این طریق یک Ftp برا سایتتون ایجاد بکنید و یا اینکه مثلا من خودم دارم رو یه سایت فروشگاهی کار میکنم که کنترل پنل سایتم رو بصورت ویندوزی نوشتم(میدونید که طراحی با واسط Html یکم دردسرش زیاده) و خیلی راحت گروه بندی محصولام رو انجام میدم و اگه نیاز به آپلود تصویر یا متن یا هر فایلی که داشته باشم سه صوته آپلود میشه تو هاست.البته باید آدرس لینکارو تو دیتابس ذخیره کنید:چشمک:
البته این فقط برای سایتهایی هستش که با ASP.NET طراحی شده

خب بریم سر اصل مطلب
ببینید دوستان برای اپلود فایل از یه برنامه ویندوزی به یک سایت شما دوتا کار باید بکنید

1- ایجاد فرم ویندوزی برای ارسال فایل
2-ایجاد صفحه وب برای دریافت فایل

خب اول دومی، دوم اولی:قهقهه:

حتما دوستان با نحوه ایجاد سایت با asp.net آشنایی دارند

یه پروژه جدید از نوع ASP.Net Empty Web Application ایجاد بکنید.یه صفحه جدید به سایتتون اضافه کنید و اسمش رو بزاری مثلا upload.aspx

خب حالا تو رویداد PageLoad صفحه ای که ساختید کد زیر رو وارد کنید

protected void Page_Load(object sender, EventArgs e)
{
foreach (string f in Request.Files.AllKeys)
{
HttpPostedFile file = Request.Files[f];
string path = Request.QueryString["path"];
DirectoryInfo ObjSearchDir = new DirectoryInfo(Server.MapPath(path));
if (!ObjSearchDir.Exists)
{
ObjSearchDir.Create();
}
file.SaveAs(Server.MapPath(path) + "/" + file.FileName);
}
}


یادتون نره که کتابخانه System.IO using کنید:چشمک:

کار کد نویسی ما تو سمت سایتمون همیت یه ذره کد بود به همین خوشمزگی میتونید فایل رو دیافت کنید:تشویق:

یه کار دیگه هم باید بکنید اینه که یه فولدر تو ریشه سایتتون بسازید به نام Files یا هر چی.عکس زیر رو ببینید

125798

خب کار ما سمت سرور تموم شد
بریم سمت ویندوز

یه پروژه جدید ایجاد کنید از نوع C#‎‎‎‎-WindowsApplication

اسم Form1 رو به UploadForm تغییر بدید و ظاهر فرم رو بصورت زیر طراحی بکنید

125799

وارد سورس فرمتون بشید و کتابخونه System.Net رو using کنید

رو دکمه دکمه انتخاب فایل کلیک کنید و کد زیر رو وارد کنید


private void btnFileName_Click(object sender, EventArgs e)
{
OpenFileDialog of = new OpenFileDialog();
of.Filter = "All Files|*.*";
if (of.ShowDialog() == DialogResult.OK)
{
txtFileName.Text = of.FileName;
}


}


و کد زیر رو برای دکمه شروع آپلود فایل درج کنید


if (string.IsNullOrEmpty(txtFileName.Text) || string.IsNullOrEmpty(txtHost.Text) || string.IsNullOrEmpty(txtPath.Text))
{
MessageBox.Show(this, "خطا در خالی ماندن فیلدها");
return;
}
try
{
WebClient client = new WebClient();
string uploadWebUrl = txtHost.Text + "/upload.aspx?path=" + "Files" + "\\" + txtPath.Text;
client.UploadFile(uploadWebUrl, txtFileName.Text);
MessageBox.Show(this, "آپلود فایل با موفقیت انجام شد");
}
catch (Exception err)
{
MessageBox.Show(this, "آپلود فایل با خطا مواجه شده است ممکن است بخاطر دلیل زیر باشد\n" + err.Message);
return;
}


خب کار ما تموم شد:بوس:

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

125800

اصلا لزومی نداره که صفحه upload.aspx رو اینجا ببینید این صفحه باید جزو صفحاتتون باشه چون من بغیر این صفحه ای نداشتم این صفحه رو صفحه StartUp انتخاب کردم مسلما سایت شما میتونه چندین صفحه داشته باشه که یکیش همون upload.aspx هستش

خب حالا فرم ویندوزیتون رو اجرا کنید و از آدرس بار سایتتون عبارت قبل از upload.aspx رو کپی کنید (این عبارت میتونه هرچیزی باشه.یعنی اینکه میتونه آدرس IP باشه یا آدرس سایت شما باشه یا تو این شگل میبینید که چون لوکال هستش عبارت لوکال هاست بهمراه یه پورتی که براش باز کرده هستش)

مثال :
www.mysite.com (http://www.mysite.com)
192.168.0.1:1010
localhost:2025
یا هرچیزه دیگه


بعد از کپی کردن اونو تو فرم زیر تو قسمت آدرس هاست وارد کنید .با انتخاب فایل یه فایل از سیستمتون رو انتخاب کنید

قسمت بعدی آدرس ذخیره سازی فایلهاتون رو سرور هستش.شما تو سایتتون یه فولدر ساختید به نام Files
آدرسی که اینجا وارد میکنید به اون فولدر Files اضافه میشه و فایلتون تو این آدرس اپلود میشه
اگه خواستید میتونید این آدرس رو رو تو دیتا بیس هم ذخیر کنید
شکل زیر رو ببینید

125794

بعد از اینکه اطلاعات رو وارد کردید اگه دکمه شروع آپلود رو بزنید فایلتون رو سایت آپلود میشه


125795

125796


امیدوارم بدرد دوستان بخوره

صلوات یادتون نره

shahryari
دوشنبه 26 آبان 1393, 12:52 عصر
باتشکر از شما
در هاستهای لینوکسی هم میشه به زبان php با حجم کمتر کد نویسی اینو پیاده سازی کرد

<?php
$uploaddir = 'upload/';
$fn = $uploaddir . basename($_FILES['file']['name']);
$fno = $_FILES['file']['tmp_name'];
$r = move_uploaded_file($fno ,$fn) ;
if ( $r == true ) {
print "True" ;
} else {
print "False";
}
?>

Behnam6670
دوشنبه 26 آبان 1393, 14:24 عصر
باتشکر از شما
در هاستهای لینوکسی هم میشه به زبان php با حجم کمتر کد نویسی اینو پیاده سازی کرد

<?php
$uploaddir = 'upload/';
$fn = $uploaddir . basename($_FILES['file']['name']);
$fno = $_FILES['file']['tmp_name'];
$r = move_uploaded_file($fno ,$fn) ;
if ( $r == true ) {
print "True" ;
} else {
print "False";
}
?>
بله درسته روشهای مختلفی برای این کار هستش

mahlake
دوشنبه 22 دی 1393, 14:04 عصر
سلام من نمیخوام فایلم رو از سیستم آپلود کنم...
میخواستم بدونم که میشه عکس ها رو مستقیم از پیکچر باکس ((درون برنامه ویندوزی)) در هاست ذخیره کرد؟
یعنی دیگه مجبور نباشیم عکس رو ذخیره کنیم و بعد به هاست انتقال بدیم...

aljae0719
جمعه 09 بهمن 1394, 10:08 صبح
سلام دوست متشکرم بابت اموزش خوبتون . :تشویق::چشمک::چشمک:

mntmon
چهارشنبه 26 خرداد 1395, 09:22 صبح
میشه بگید چجوری میشه این فایل aspx رو روی سایت آپلود کرد جوری که کار کنه؟

rezakhakpour
شنبه 29 اردیبهشت 1397, 14:23 عصر
باتشکر از شما
در هاستهای لینوکسی هم میشه به زبان php با حجم کمتر کد نویسی اینو پیاده سازی کرد

<?php
$uploaddir = 'upload/';
$fn = $uploaddir . basename($_FILES['file']['name']);
$fno = $_FILES['file']['tmp_name'];
$r = move_uploaded_file($fno ,$fn) ;
if ( $r == true ) {
print "True" ;
} else {
print "False";
}
?>

من یه وبسرویس php نوشتم که میخوام فایل صوتی رو از برنامه سی شارپی بهش بفرستم و با کدهای php و... آپلود بشه
ولی php آدرس فایل کلاینت رو نمیفهمه،
میخواستم بدونم راهی هست php آدرس کلاینت رو بفهمه؟
یا راهی هست فایل رو بصورت بایت یا ... از سی شارپ بفرستم و php بگیرتش و آپلود کنه؟

رامین مرادی
شنبه 29 اردیبهشت 1397, 15:36 عصر
http://barnamenevis.org/showthread.php?548147-%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-%D9%88-%D8%AF%D8%B1%DB%8C%D8%A7%D9%81%D8%AA-%D9%81%D8%A7%DB%8C%D9%84-%D8%A7%D8%B2-%D8%B7%D8%B1%DB%8C%D9%82-%D9%87%D8%A7%D8%B3%D8%AA-%D8%A8%D9%88%D8%B3%DB%8C%D9%84%D9%87-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE%DB%8C
این تایپیک رو هم بررسی فرمایید.

juza66
دوشنبه 31 اردیبهشت 1397, 00:58 صبح
سلام خیلی تشکر از اموزش خوبتون
یک سوال میمونه اونم هر کسی میتونه به ادرس تون فایل بده و سایت اون رو ذخیره میکنه، اگر توکن براش در نظر نگرفتید یا قسمت auth نداره که متوجه بشید نرم افزار شما داره فایل رو میفرسته، به نظرتون منابع سرورتون برای دریافت های پشت سرهم و انواع فایل دچار مشکل نمیشه؟؟