PDA

View Full Version : سوال در مورد FileUpload



Arezoo62
جمعه 21 بهمن 1390, 12:13 عصر
دوستان برنامه نویس من یک FileUpload دارم
که می خواهم فقط پسوند MP3 رو با حداکثر حجم 1 MB آپلود کن تو فولدر files

fakhravari
جمعه 21 بهمن 1390, 12:30 عصر
با روش اپلود عکس فرقی نداره.
فقط حجم کنترل کنید.
فایل کنفیگ

<httpRuntime maxRequestLength="1024" executionTimeout="60"/>

Arezoo62
جمعه 21 بهمن 1390, 12:37 عصر
دوست عزیز من متوجه نشدم
می خواهم اگه حجم بیشتر بود و یا اینکه فورمتش متفاوت بود ارور بده

fakhravari
جمعه 21 بهمن 1390, 13:37 عصر
یه مثال

public string UpPath;
public string pathAtach;
public static string AtachFileName;

UpPath = Server.MapPath(@"../Img/File_Topik/");
if (!Directory.Exists(UpPath))
{
Directory.CreateDirectory(Server.MapPath(@"../Img/File_Topik/"));
}

pathAtach = Server.MapPath(@"../Img/File_Topik/");
String[] validext = { ".rar", ".zip", ".doc", ".docx", ".ppt", ".pptx" };
string ext = System.IO.Path.GetExtension(FileUpload2.PostedFile .FileName);
if (Array.IndexOf(validext, ext.ToLower()) < 0)
{
return;
}

AtachFileName = System.IO.Path.GetFileName(FileUpload2.FileName);

//FileInfo TheFile = new FileInfo(Server.MapPath(@"../Img/File_Topik/") + AtachFileName);
//if (TheFile.Exists)
//{
// File.Delete(Server.MapPath(@"../Img/File_Topik/") + AtachFileName);
//}
while (System.IO.File.Exists(pathAtach + AtachFileName))
{
AtachFileName = "1" + AtachFileName;
}

FileUpload1.PostedFile.SaveAs(pathAtach + AtachFileName);

در نهایت این را باید ذخیره کنید.
AtachFileName
برای حجم هم
if (FileUpload2.FileName.Length > 1024)
{

}

Arezoo62
جمعه 21 بهمن 1390, 23:19 عصر
مشکلم حل نشد
من یه نمونه ی ساده می خواهم از مواردی که گفتم

ramin149
جمعه 21 بهمن 1390, 23:25 عصر
public bool GroupImages(HiddenField addrees, FileUpload fileup, Label Error)
{
string mypath = HttpContext.Current.Server.MapPath("~") + "/Administrator/Images/Group/";

if (!Directory.Exists(HttpContext.Current.Server.MapP ath("~/Administrator/Images/Group/")))
{
Directory.CreateDirectory(HttpContext.Current.Serv er.MapPath("~/Administrator/Images/Group/"));
}

string[] validextention = { ".jpg", ".png", ".bnp", ".jpeg", ".gif" };
string x = System.IO.Path.GetExtension(fileup.PostedFile.File Name);
if (Array.IndexOf(validextention, x.ToLower()) < 0)
{
Error.Text = "you seleted invalid type of image for uploading";
return false;
}


long sizefile = fileup.PostedFile.ContentLength;
sizefile = sizefile / 1024;
if (sizefile > 30000)
{
Error.Text = "invalid size image uploading";
return false;
}

string filename = System.IO.Path.GetFileName(fileup.PostedFile.FileN ame);
while (System.IO.File.Exists(mypath + filename))
{
int c = filename.Length - x.Length;
filename = filename.Insert(c, "3");

}
fileup.PostedFile.SaveAs(mypath + filename);


addrees.Value = "~/Administrator/Images/Group/" + filename;

Error.Text = "عکس ذخیره شد";

fileup.Dispose();
fileup = null;
return true;
}

dorparasti
جمعه 21 بهمن 1390, 23:49 عصر
بصورت ساده به شکل زیر می تونه باشه . اما یک فرایند آپلود فایل قوی و کامل نکاتی بیشتری داره


// اگر حاوی فایل باشد
if (FileUpload1.HasFile)
{
//گرفتن مشخصات فایل
// حجم
int FileLength = FileUpload1.PostedFile.ContentLength;
// نوع
string MimeType = FileUpload1.PostedFile.ContentType;
// نام فایل
string FileName = System.IO.Path.GetFileName(FileUpload1.FileName);

// چک کردن نوع فایل
if (MimeType.ToLower() != "audio/mpeg")
{
// پیام خطای خودتون رو اینجا می تونین بذارین
return;

}

// چک کردن حجم فایل
if (FileLength > 1024000)
{
// پیام خطای خودتون رو اینجا می تونین بذارین
return;

}

// ساختن مسیر ذخیره فایل
string SavePath = MapPath("~/Files/" + FileName);
// ذخیره فایل
FileUpload1.SaveAs(SavePath);
}

Arezoo62
شنبه 22 بهمن 1390, 11:02 صبح
بصورت ساده به شکل زیر می تونه باشه . اما یک فرایند آپلود فایل قوی و کامل نکاتی بیشتری داره


// اگر حاوی فایل باشد
if (FileUpload1.HasFile)
{
//گرفتن مشخصات فایل
// حجم
int FileLength = FileUpload1.PostedFile.ContentLength;
// نوع
string MimeType = FileUpload1.PostedFile.ContentType;
// نام فایل
string FileName = System.IO.Path.GetFileName(FileUpload1.FileName);

// چک کردن نوع فایل
if (MimeType.ToLower() != "audio/mpeg")
{
// پیام خطای خودتون رو اینجا می تونین بذارین
return;

}

// چک کردن حجم فایل
if (FileLength > 1024000)
{
// پیام خطای خودتون رو اینجا می تونین بذارین
return;

}

// ساختن مسیر ذخیره فایل
string SavePath = MapPath("~/Files/" + FileName);
// ذخیره فایل
FileUpload1.SaveAs(SavePath);
}


1024000 برابر با چند مگابایت هستش؟ :خجالت:
اگه بخواهم فقط فرمت mp3. همینطوری بذارمش؟
و سوال اخرم اینه که بعد از اپلود فایل می خواهم ادرسش ریخته بشه تو یک textbox
برای مثال: http://mysite.com/Files/chavoshi.mp3

ممنونم اگه جا داشت هزارتا تشکر میزدم براتون

dorparasti
شنبه 22 بهمن 1390, 11:18 صبح
[QUOTE=Arezoo62;1439862]1024000 برابر با چند مگابایت هستش؟ :خجالت:
اگه بخواهم فقط فرمت mp3. همینطوری بذارمش؟
و سوال اخرم اینه که بعد از اپلود فایل می خواهم ادرسش ریخته بشه تو یک textbox
برای مثال: http://mysite.com/Files/chavoshi.mp3

اول - یک مگابایت ( چون کنترل FileUpload بر اساس بایت حجم رو نشون میده )
دو - این کد اونرو محدود به فایل های صوتی mp3 و چندتای دیگه می کنه .
برای محدود کردن نوع فایل چند روش هستش . یکی بر اساس پسوند فایل که همون mp3 , jpeg , divx هستن که توی کد بچه ها هست .




string x = System.IO.Path.GetExtension(fileup.PostedFile.File Name);
if (x.ToLower()!=".mp3")
{
Error.Text = "you seleted invalid type of file for uploading";
return false;
}



یک روش بر اساس mimeType (http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types) هستش که همینه که من استفاده کردم که بازهم به راحتی میشه دورش زد . روش دیگه ای هم هست که قبل از ذخیره فایل روی سرور بایت های اولیه فایل رو چک می کنه و بر اساس محتویات فایل مجاز یا غیرمجاز بودن اون رو تعیین می کنه که از 2 روش قبلی قویتره . اما در مورد دور زدنش اطلاعی ندارم . شما می تونید هم contentType و هم پسوند فایل رو چک کنید .

Arezoo62
شنبه 22 بهمن 1390, 11:32 صبح
ممنونم فقط نگفتید چطوری ادرسش و بریزم تو textbox
?

golnouri
شنبه 22 بهمن 1390, 17:09 عصر
دقیقا منظورتون چیه؟

Arezoo62
شنبه 22 بهمن 1390, 18:07 عصر
می خواستم آدرس فایل اپلود شده ریخته بشه تو TextBox

fakhravari
شنبه 22 بهمن 1390, 18:13 عصر
بریزید در یه texbox
متغیرSavePath
اقای dorparasti
ادرس کل SavePath
FileName نام فایل انتخابی

sara_aryanfar
شنبه 22 بهمن 1390, 18:22 عصر
منم یه سوال داشتم اگر بخواهیم فایلی رو از روی سرور حذف کنیم چطوریه توجه کنید که فایل در یک پوشه ذخیره شده و نام اون در دیتا بیس ذخیره شده؟

fakhravari
شنبه 22 بهمن 1390, 18:31 عصر
using System.IO;
ایجاد پوشه

UpPath = Server.MapPath(@"../Img/Img_Topik/");
if (!Directory.Exists(UpPath))
{
Directory.CreateDirectory(Server.MapPath(@"../Img/Img_Topik/"));
}

حذف

ImageFileName = System.IO.Path.GetFileName(FileUpload1.FileName);

FileInfo TheFile = new FileInfo(Server.MapPath(@"../Img/Img_Topik/") + ImageFileName);
if (TheFile.Exists)
{
File.Delete(Server.MapPath(@"../Img/Img_Topik/") + ImageFileName);
}

Arezoo62
شنبه 22 بهمن 1390, 21:05 عصر
بریزید در یه texbox
متغیرSavePath
اقای dorparasti
ادرس کل SavePath
FileName نام فایل انتخابی

میشه کدش و بگید
من اینطوری نوشتم اما اسم فایل و نمیذاره:
textbox1.text = savepath;

در ضمن اگه یه فایل تکراری آپلود شد چیکار کنیم اسمش تغییر کنه؟

sara_aryanfar
شنبه 22 بهمن 1390, 21:38 عصر
نه ببینید مثلا ما 10 تا یا هر چندتا عکس در یک دایرمکتوریمون داریم و اونا رو تو بخش مدیریت داخل یک گرید ویو نشون میدیم حالا اونجا اگر بخواهیم حذف کنیم چطوری میشه

hjran abdpor
شنبه 22 بهمن 1390, 21:52 عصر
نه ببینید مثلا ما 10 تا یا هر چندتا عکس در یک دایرمکتوریمون داریم و اونا رو تو بخش مدیریت داخل یک گرید ویو نشون میدیم حالا اونجا اگر بخواهیم حذف کنیم چطوری میشه

برای حذف اونجوری که مدنظرتون است میتونید یه فرم بزارید که برای حذف کردن باشه و یک گرید ویو که اطلاعات را لود کنه بعد یه دکمه داخل Template یا هر جوری که میخاید دکمه اضافه کنید بعد ادرس ها را تک بخونید و حذف کنید . تقریبا اصول یکی دارد فقط خوندن ادرس ها است و بس.

کاربر arezoo2

FilePath = string.Empt;
FileUpload1.SaveAs(Server.MapPath("SavedImage") + "\\" + FileUpload1.FileName.ToString());
FilePath = "~/SavedImage\\" + FileUpload1.FileName.ToString();
Label1.Text = "مسیر ذخیره عکس در سرور:";
Label3.Text = FilePath;


فقط به جای لیبل یه عدد تکس باکس بزار !! ولی اصولش اینه لیبل باشه .
با تشکر.

sara_aryanfar
شنبه 22 بهمن 1390, 22:01 عصر
یعنی ما برای حذف هم باید از FileUpload1 استفاده کنیم وقتی عکس ها رو داخل گرید نشون میدیم به آدرس اونا دسترسی داریم اما برای حذف FileUpload1 چه کاربردی داره میشه توضیح بدین؟ممنون

hjran abdpor
شنبه 22 بهمن 1390, 22:16 عصر
اگه تو همون صفحه که دارید اپ مکنید میخاید حذف کنید اره ، ولی اگه همون طور که گفتید توی یک صفحه جدا میخاید این کار را بکنید کافی است عکس ها را نشون بدید و ادرس ها انها را حذف کنید و بعد توسط ادرسی که حذف کردید اون را تو سرور هم حذف کنید !!! البته بستگی به نحوه ذخیره سازی فایل هم دارد ، مثلا بعضی ها فقط تو خود DB ذخیره میکنند و ادرس ندارند ، حذف کردن اینجوری خیلی اسون است ، اگه فقط ادرس ها تو DB ذخیره شده اند ، و فایل جدا میتونید دوتابع برای خودتون بنوسید و این کار را به صورت ساختمند انجام بدید ! این نمونه کد از روال انجام شده است :

protected void bt_Click(object sender, EventArgs e)
{
try
{
FileInfo TheFile = new FileInfo(MapPath(".") + "\\" + MyFile.JPG);
if (TheFile.Exists)
{
File.Delete(MapPath(".") + "\\" + MyFile.JPG);
}
else
{
File.Create(Server.MapPath(" "));
or
Your Code To Create image
Bitmap.save(Server.MapPath("MyFile.jpg",ImageFormat.Jpeg);
}
}

catch (Exception ex)
{
Response.write(ex.Message);
}
}


البته شما میتونید یک ارایه برای کلیه ادرس ها در نظر بگیرد .

پیوست : مراجع MSDN کدهای قشنگی دارند برای این کار یه نگاهی بندازید.

با تشکر.

sara_aryanfar
شنبه 22 بهمن 1390, 22:50 عصر
در واقع من عکس ها رو داخل یک پوشه ذخیره می کنم و نام اونها رو در دیتا بیس من در واقع در صفحه دیگه ای می خوام عمل حذف کردن رو انجام بدم

hjran abdpor
شنبه 22 بهمن 1390, 23:03 عصر
خوب دوست عزیز همون کاری که گفتم انجام بدید ، عکس ها را توی گرید ویو نمایش که دادید یه دکمه بزارید برای حذف کردن ، بعد داخل دکمه کدهای که گفتم بنویسید .

پیوست : اگه وقت شد یه نمونه برای دوستان میزارم.

mmnoody2006
شنبه 22 بهمن 1390, 23:11 عصر
یک پیشنهاد کاری برای برنامه نویسان محترم اگر می خواهید دوران کاری تون رو
به خیر و خوشی به پایان برسونید حتما جایی به کار مشغول بشید که از پذیرفتن
برنامه نویسان خانوم خوداری کنند :قهقهه:

(مزاح)

fakhravari
شنبه 22 بهمن 1390, 23:37 عصر
یه تشکر میزنم برای تو mmnoody2006 (http://barnamenevis.org/member.php?79279-mmnoody2006)
ولی دیگه این کار نکن
ببنید sara_aryanfar (http://barnamenevis.org/member.php?191209-sara_aryanfar) شما با هر روشی نام فایل دارید دیگه.
برای حذف هم میتوانید از این تیکه استفاده کنید
File.Delete(Server.MapPath(@"Img/Img_Topik/") + ImageFileName);

hjran abdpor
شنبه 22 بهمن 1390, 23:47 عصر
یک پیشنهاد کاری برای برنامه نویسان محترم اگر می خواهید دوران کاری تون رو
به خیر و خوشی به پایان برسونید حتما جایی به کار مشغول بشید که از پذیرفتن
برنامه نویسان خانوم خوداری کنند :قهقهه:

(مزاح)
دوست عزیز بحث به بیراه نره!!! ولی خانم ها خیلی زیاد تو بخش برنامه نویسی پیشرفت کردند دو سه تا شرکتی که دیدم و رفتم اکثر پرسنل ها خانم هستند !!!!!!

sara_aryanfar
یک شنبه 23 بهمن 1390, 00:06 صبح
یه تشکر میزنم برای تو mmnoody2006 (http://barnamenevis.org/member.php?79279-mmnoody2006)
ولی دیگه این کار نکن
ببنید sara_aryanfar (http://barnamenevis.org/member.php?191209-sara_aryanfar) شما با هر روشی نام فایل دارید دیگه.
برای حذف هم میتوانید از این تیکه استفاده کنید
File.Delete(Server.MapPath(@"Img/Img_Topik/") + ImageFileName);
از لطف بی دریغ شما ممنون هستم فکر نمی کنم هیچ کس ادعا کنه برنامه نویسی مختص یه قشر خاص هست کاش به جای این حرفهای مال دوران جاهلیت سعی کنیم به هم چیزی یاد بدیم نه جهالت به خرج بدیم من از جناب فخرآوری واقعا ممنون هستم چون همیشه سوالات من و تعداد زیادی از دوستان رو دقیق جواب دادن بدون حرفای .. برای بعضیا فقط متاسفم

Arezoo62
یک شنبه 23 بهمن 1390, 14:26 عصر
من جوابم و نگرفتم
با کدهای زیر مشکل آپلود حل شده فقط می خواهم در آخر آدرس اینترنتی فایل آپلود شده ریخته بشه تو txtHelp
if (FileUpload1.HasFile)
{
int FileLength = FileUpload1.PostedFile.ContentLength;
string MimeType = FileUpload1.PostedFile.ContentType;
string x = System.IO.Path.GetExtension(FileUpload1.PostedFile .FileName);
if (x.ToLower() != ".mp3")
{
Image1.Visible = false;
Image2.Visible = true;
Label1.Text = "پسوند فایل انتخاب شده معتبر نمی باشد!";
return;
}
if (FileLength > 1024000)
{
Image1.Visible = false;
Image2.Visible = true;
Label1.Text = "حجم فایل انتخاب شده بیشتر از 1 مگابایت می باشد!";
return;
}
string SavePath = MapPath("~/mp3/" + x);
FileUpload1.SaveAs(SavePath);
txtHelp.Text = SavePath + FileUpload1.FileName;
Label1.Text = "فایل مورد نظر شما با موفقیت در سایت آپلود شد.";
Image1.Visible = true;
Image2.Visible = false;
Panel1.Enabled = false;
Panel2.Enabled = true;

در صورتی که با کدهای فوق آدرس آهنگ آپلود شده رو اینطوری میده:
C:\HostingSpaces\sanazjoon.com\sanazjoon.com\wwwro ot\mp3\.mp3ghomayshi.mp3

programer-ir
یک شنبه 23 بهمن 1390, 14:53 عصر
string SavePath = MapPath("~/mp3/" + x);

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

txtHelp.Text = SavePath + FileUpload1.FileName;

به



txtHelp.Text ="آدرس سایت"+ FileUpload1.FileName;

Arezoo62
یک شنبه 23 بهمن 1390, 15:08 عصر
واقعا ممنونم ازتون
فقط یه سوالی باقی میمونه
اگه اسم فایلهای آپلود شده یکی بود می خواهم label1 به کاربر بگه که یکیه و آپلود نشه

neo1989021
یک شنبه 23 بهمن 1390, 17:06 عصر
منم سوال ارزو دارم با این تفاوت که چیکار کنیم اگه فایل تکراری اپلود شد اسمش و تغییر بده

Arezoo62
یک شنبه 23 بهمن 1390, 20:09 عصر
به نظر من ارور بده و اپلود نشه بهتره
کسی نیست؟

fakhravari
یک شنبه 23 بهمن 1390, 20:32 عصر
با سلام
یه مثال میزارم دیگه خودت با جواب های قبل merge کن.

pathImage = Server.MapPath(@"../Img/Img_Topik/");
ImageFileName = System.IO.Path.GetFileName(FileUpload1.FileName);

while (System.IO.File.Exists(pathImage + ImageFileName))
{
ImageFileName = "1" + ImageFileName;
}


FileUpload1.PostedFile.SaveAs(pathImage + ImageFileName);

public string pathImage;
public string ImageFileName;

Arezoo62
چهارشنبه 26 بهمن 1390, 18:27 عصر
دوستان من با این کد دارم آپلود می کنم اما آهنگی که اپلود میشه رو با این اسم اپلود میکنه:
mp3.

if (FileUpload1.HasFile)
{
int FileLength = FileUpload1.PostedFile.ContentLength;
string MimeType = FileUpload1.PostedFile.ContentType;
string x = System.IO.Path.GetExtension(FileUpload1.PostedFile .FileName);
if (x.ToLower() != ".mp3")
{
Image1.Visible = false;
Image2.Visible = true;
Label1.Text = "پسوند فایل انتخاب شده معتبر نمی باشد!";
return;
}
if (FileLength > 1024000)
{
Image1.Visible = false;
Image2.Visible = true;
Label1.Text = "حجم فایل انتخاب شده بیشتر از 1 مگابایت می باشد!";
return;
}
else
{
string SavePath = MapPath("~/mp3/" + x);
FileUpload1.SaveAs(SavePath);
txtHelp.Text = "http://www.fars.com/mp3/" + FileUpload1.FileName;
Label1.Text = "فایل مورد نظر شما با موفقیت در سایت آپلود شد.";
Image1.Visible = true;
Image2.Visible = false;
Panel1.Enabled = false;
Panel2.Enabled = true;
}
}



لطفا کمکم کنید!!!!!!!!!!!!!

golnouri
چهارشنبه 26 بهمن 1390, 23:28 عصر
امکان داره از سرور باشه