PDA

View Full Version : نحوه تعریف محدود کننده نوع فایل و بدست اوزدن حجم فایل



boysilent
پنج شنبه 29 دی 1390, 16:41 عصر
با سلام
دوستان میخواستم ببیتم طریقه تعریف کردن محدود کننده نوع فایل مثلا jpgچطوریه؟
و چجوری میشه بعد این که عکس توسط فایل اپلود انتخاب شد حجمش داخل یه متغیری قرار بگیره؟؟؟

boysilent
پنج شنبه 29 دی 1390, 23:25 عصر
Path.GetExtension(FileUpload1.FileName).ToLower = ".doc"
ر

این کدرو پیداکردم ولی ظاها واسهvb?

fakhravari
پنج شنبه 29 دی 1390, 23:54 عصر
یه جستجوی میکردی.
http://barnamenevis.org/showthread.php?319398
Label1.Text = FileUpload1.FileName.Length.ToString() + " KB";


public string UpPath;
public string pathImage;
public static string ImageFileName;

public string pathAtach;
public static string AtachFileName;

public void uploadpic()
{

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

pathImage = Server.MapPath(@"../Img/Img_Topik/");
String[] validext = { ".jpg", ".jpeg", ".bmp", ".jpe", ".png", ".gif", ".tiff", ".tif", ".bmp" };
string ext = System.IO.Path.GetExtension(FileUpload1.PostedFile .FileName);
if (Array.IndexOf(validext, ext.ToLower()) < 0)
{
return;
}

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);
//}

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


FileUpload1.PostedFile.SaveAs(pathImage + ImageFileName);
}

public void uploadFile()
{

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);
}

اوبالیت به بو
جمعه 30 دی 1390, 03:42 صبح
درود

کد جناب fakhravari (http://barnamenevis.org/member.php?128926-fakhravari) صحیح است اما یک سری نکات هست که بهتره رعایت بشه.

1- فایل ها در وب بوسیله استانداردی به نام MIME Type شناخته می شوند نه پسوند .jpg یا .doc و غیره. پس بهتره در آرایه validText از رشته های MIME Type استفاده بشه. مثلا به جای ".jpg" نوشته بشه: "image/jpeg".

http://en.wikipedia.org/wiki/Internet_media_type

2- پسوند فایل از هدر فایل خونده نشده و از دستور IO.Path.GetExtension استفاده شده. فرض کنید من یک فایل exe رو rename کنم و به صورت file.exe.jpg ذخیره کنم. قطعا خروجی jpg خواهد بود چون از یک متدی استفاده شده که مربوط به بخش IO و string هاست. بهتره به جای این کار بیایم از هدر فایل نوع فایل رو بخوانیم. مقدار خروجی از هدر فایل مقداریست از نوع MIME Type.


if (Array.IndexOf(ValidExtionsion, FileUpload1.PostedFile.ContentType) < 0)
{
return ;
}

boysilent
جمعه 30 دی 1390, 09:52 صبح
چیز باحالی گفتین ولی یکم مفهومی تر
این کد رو میگم


if (Array.IndexOf(ValidExtionsion, FileUpload1<b>.PostedFile.ContentType</b>) < 0)
{
return ;
}

boysilent
جمعه 30 دی 1390, 11:07 صبح
دوستان عزیز مشکلم با نوع فایل حل شد اما چطوری بعد از انتخاب فایل حجمشرو بدست بیاریم من اینکارو کردم ج نداد یعنی مقدار اشتباه دادش

hajm = FileUpload1.FileName.Length.ToString();

fakhravari
جمعه 30 دی 1390, 11:52 صبح
با سلام
ولی با file.exe.jpg هم ذخیره کرد :گیج:

boysilent
جمعه 30 دی 1390, 14:03 عصر
حرف
اوبالیت به بو (http://barnamenevis.org/member.php?47457-%D8%A7%D9%88%D8%A8%D8%A7%D9%84%DB%8C%D8%AA-%D8%A8%D9%87-%D8%A8%D9%88)
http://barnamenevis.org/images/statusicon/user-offline.png کاملا صحیحه
من اینجوری نوشتم ولی میخواستم ببینم منبه سراغ ندارید که application هارو داسته باشه؟؟


if (
FileUpload1.PostedFile.ContentType == "application/text"||
FileUpload1.PostedFile.ContentType == "text/rtf" ||
FileUpload1.PostedFile.ContentType == "application/doc" ||
FileUpload1.PostedFile.ContentType == "appl/text" ||
FileUpload1.PostedFile.ContentType == "application/vnd.msword" ||
FileUpload1.PostedFile.ContentType == "application/vnd.ms-word" ||
FileUpload1.PostedFile.ContentType == "application/winword" ||
FileUpload1.PostedFile.ContentType == "application/word" ||
FileUpload1.PostedFile.ContentType == "application/msword" ||
FileUpload1.PostedFile.ContentType == "application/x-msw6" ||
FileUpload1.PostedFile.ContentType == "application/x-msword" ||
FileUpload1.PostedFile.ContentType == "application/pdf" ||
FileUpload1.PostedFile.ContentType == "application/x-pdf"

)

fakhravari
جمعه 30 دی 1390, 14:33 عصر
String[] validext = { "image/gif", "image/jpeg", "image/pjpeg", "image/png"}; :متفکر:
if (Array.IndexOf(validext, FileUpload1.PostedFile.ContentType) < 0)
{
Response.Write("Eroor");
return;
}
نمیشه

dorparasti
جمعه 30 دی 1390, 15:31 عصر
درود

2- پسوند فایل از هدر فایل خونده نشده و از دستور IO.Path.GetExtension استفاده شده. فرض کنید من یک فایل exe رو rename کنم و به صورت file.exe.jpg ذخیره کنم. قطعا خروجی jpg خواهد بود چون از یک متدی استفاده شده که مربوط به بخش IO و string هاست. بهتره به جای این کار بیایم از هدر فایل نوع فایل رو بخوانیم. مقدار خروجی از هدر فایل مقداریست از نوع MIME Type.


if (Array.IndexOf(ValidExtionsion, FileUpload1.PostedFile.ContentType) < 0)
{
return ;
}


من هم همین اشتباه رو کردم . و از Extension استفاده کردم ولی توی اسم فایل محدودیت نقطه و کاراکتر رو گذاشتم . تست کردم و نتونستم فایل exe رو آپلود کنم بخاطر همون نقطه .