PDA

View Full Version : چطور نوع یک فایل داده شده در input file را بگیرم



Mostafa_Sabeti
یک شنبه 07 مهر 1387, 14:20 عصر
یک inputfile داریم که کاربر با ان یک فایل را آپلود میکنه. اگر بخواهیم نوع فایل را بدست بیاریم چکار باید بکنیم.
البته من از خصوصیت ContentType استفاده کردم ولی این تابع فقط پسوند را برنمیگرداند مثلا اگر یک فایل jpg باشد این متد مقدار رشته ای "image/jpg" را به عنوان نوع فایل بر میگرداند.
اگر هم بخواهم فقط قسمت آخر را با متد های رشته ای بردارم بازم مشکل بوجود می یاد بعنوان مثال برای فایل image/x-png ، png را بر میگرداند.

Amir Taghavi
یک شنبه 07 مهر 1387, 14:25 عصر
System.IO.Path.GetExtension(this.FileUpload1.FileN ame).Remove(0, 1)

Mostafa_Sabeti
یک شنبه 07 مهر 1387, 14:35 عصر
خیلی ممنون دوست عزیز
با عرض پوزش فکر کنم صحیحش این باشه


System.IO.Path.GetExtension(Me.FileUpload1.PostedF ile.FileName).Remove(0, 1)

Amir Taghavi
یک شنبه 07 مهر 1387, 14:41 عصر
دل انگیز بابا! من با #C نوشتم ولی ; رو آخرش نذاشتم. یه خط که چیزی نیست. (:

baran_mehr
چهارشنبه 10 مهر 1387, 23:27 عصر
ببخشید دوستان که سوالم بی روبط به موضوع هست از این بابت منو ببخشید.
میخواستم بدونم چطور با شئ inputfile عمل اپلود فایل رو انجام میدید؟

merlin_vista
چهارشنبه 10 مهر 1387, 23:46 عصر
ببخشید دوستان که سوالم بی روبط به موضوع هست از این بابت منو ببخشید.
میخواستم بدونم چطور با شئ inputfile عمل اپلود فایل رو انجام میدید؟

if (this.PicFile.PostedFile.ContentLength > 300 * 1024)
{
this.lblsize.Visible = true;
return;
}
if (this.PicFile.PostedFile.FileName == "")
return;

string FileName = this.PicFile.PostedFile.FileName;
System.IO.FileInfo FI = new System.IO.FileInfo(FileName);

if (FI.Extension.ToLower() != ".jpg")
{
this.lblsuffix.Visible = true;
return;
}
string Path = this.Request.PhysicalApplicationPath;

System.IO.FileStream FS = new System.IO.FileStream(Path + "Images\\" + FI.Name, System.IO.FileMode.Create);
System.IO.Stream St = this.PicFile.PostedFile.InputStream;

byte[] b = new byte[St.Length];

St.Read(b, 0, b.Length);
FS.Write(b, 0, b.Length);

St.Close();
FS.Close();

baran_mehr
پنج شنبه 11 مهر 1387, 11:19 صبح
سلام merlin_vista جان(خیلی وقت بود نمی دیدمت دلم برات تنگ شده بود).
merlin_vista جان ممنون از کدی که گذاشتی. فقط فایلها رو کجا میریزه؟؟ من ادرس Path رو دستی درایو C دادم اما نریخت.

merlin_vista
پنج شنبه 11 مهر 1387, 11:54 صبح
قط فایلها رو کجا میریزه؟؟در پوشه اي كه برنامه Run هست يه فلدر با نام Images بسازيد . فايل ها را در آنجا آپلود ميكنه .


string Path = this.Request.PhysicalApplicationPath;كد بالا محل جاري برنامه را روي ديسك سخت بر ميگردونه .


من ادرس Path رو دستی درایو C دادم اما نریخت.فكر ميكنم مشكل از Permision ها باشه .

baran_mehr
پنج شنبه 11 مهر 1387, 12:15 عصر
ممنون عزیزم درست شد.
فقط چند تا سوال برام پیش امد ممنون میشم منو راهنمایی کنید:
یکیش اینه.آیا این کد برای اینکه اندازه فایل از این مقدار بیشتر نشه؟؟ و PostedFile برای چه استفاده میشه؟؟

if (this.PicFile.PostedFile.ContentLength > 300 * 1024)
یه سوال دیگه هم داشتم چطور میشه روی فایلها محدودیت ظرفیت هم گذاشت مثلا فیلهای بالای 1m رو اپلود نکه و پیغام بده به کاربر؟؟
و سوال اخرم شما آیا این کد وقتی که روی هاست هم قرار بگیره درست عمل میکنه و ادرسو بر میگردونه؟

string Path = this.Request.PhysicalApplicationPath;

milade
پنج شنبه 11 مهر 1387, 12:26 عصر
اخطار به دوستانم:لطفا تایپیک رو انحصاری نکنید و فقط به بیان جواب پست اول بپردازید
در جواب پست اول:

dim x=System.IO.Path.GetExtension(FileUpload1.FileName )
که x پسوند رو بر می گردونه

merlin_vista
پنج شنبه 11 مهر 1387, 13:21 عصر
ممنون عزیزم درست شد.
فقط چند تا سوال برام پیش امد ممنون میشم منو راهنمایی کنید:
یکیش اینه.آیا این کد برای اینکه اندازه فایل از این مقدار بیشتر نشه؟؟ و PostedFile برای چه استفاده میشه؟؟
بله .


یه سوال دیگه هم داشتم چطور میشه روی فایلها محدودیت ظرفیت هم گذاشت مثلا فیلهای بالای 1m رو اپلود نکه و پیغام بده به کاربر؟؟

با همان كدي كه دربارش پرسيديد ميشه . PostedFile.ContentLength

و سوال اخرم شما آیا این کد وقتی که روی هاست هم قرار بگیره درست عمل میکنه و ادرسو بر میگردونه؟
بله .

يه پيشنهاد : از اين كنترل استفاده نكن . از كنترب خود دات نت به نام FileUpload اسفاده كن .

baran_mehr
پنج شنبه 11 مهر 1387, 14:00 عصر
ممنون merlin_vista جان.
من با FileUpload کار نکردم تا حالا ، ایا شیوه استفاده از FileUpload هم مثل inpotfile هست؟

baran_mehr
پنج شنبه 11 مهر 1387, 14:14 عصر
من از همه دوستان معذرت میخوام که این سوال رو اینجا مطرح کردم. داداش milade جان راست میگن.
اما داداش من مجبور شدم اخه قبلا این سوال رو پرسیده بودم و به نتیجه نرسیدم و اگر دوباره این سوال رو به عنوان تایپیک مطرح میکردم شاید دوستان از این کار ناراحت میشدن. در هر صورت منو ببخشید .

milade
پنج شنبه 11 مهر 1387, 14:28 عصر
دوست عزیز من که کاره ای نیستم ولی این طوری حق دوستمون ضایع می شه .
فکر کن دوستمون کارتش شبانه باشه و حالا بعد از 24 ساعت ببینه که شما به پاسختون رسیدید و هنوز خودش گیره
برای همین می تونید یه تایپیک جدید بزنی مطمعن باش هیچ کس ناراحت نمی شه .
موفق و پیروز باشی , در پناه حق

merlin_vista
پنج شنبه 11 مهر 1387, 15:01 عصر
من با FileUpload کار نکردم تا حالا ، ایا شیوه استفاده از FileUpload هم مثل inpotfile هست؟

درسايت مثال هاي خوبي هست .
بسيار ساده تر از inpotfile است ...