PDA

View Full Version : سوال: تشخيص فرمت فايل



kaveh-C#
شنبه 15 فروردین 1388, 09:20 صبح
درود بر همه ي دوستان
من يه صفحه ثبت نام كاربر طراحي كردم كه مشخصات و عكس كاربر رو دريافت ميكنه (با فرمتهاي jpg,gif,bmp) . توي صفحه ي بعد مي خوام عكس كاربر ثبت نام شده رو نمايش بدم.حالا چه جوري مي تونم تشخيص بدم كه كاربر عكسشو به چه فرمتي رو هاست گذاشته؟

KavoshGar_ir
شنبه 15 فروردین 1388, 09:41 صبح
درود بر همه ي دوستان
من يه صفحه ثبت نام كاربر طراحي كردم كه مشخصات و عكس كاربر رو دريافت ميكنه (با فرمتهاي jpg,gif,bmp) . توي صفحه ي بعد مي خوام عكس كاربر ثبت نام شده رو نمايش بدم.حالا چه جوري مي تونم تشخيص بدم كه كاربر عكسشو به چه فرمتي رو هاست گذاشته؟




if (FileUpload1.HasFile)
{
string filName = Server.HtmlEncode(FileUpload1.FileName);

string extention = System.IO.Path.GetExtension(filName);
if (extention == ".jpg")
// do it

bill_geits
شنبه 15 فروردین 1388, 17:26 عصر
KavoshGar_ir واقعا خسته نباشي !!
اين كدي كه شما نوشتي فقط پسوند فايل رو معلوم ميكنه نه فرمت
البته به نظر من همين روش منطقي ترين راهه و اگه خطايي حين عمليت رخ داد با پيغامي مناسب به كاربر نشان داد .
چون تشخيص فرمت فايل كار راحتي نيست ( البته من خودم كار نكردم و شايدم راحت باشه !! :لبخند:)

kaveh-C#
شنبه 15 فروردین 1388, 17:33 عصر
ممنون از جوابتون ولي باز هم مشكل حل نميشه چون من توي اين صفحه اي كه مي خوام عكس نمايش داده بشه هيچ FileUpload وجود نداره، FileUpload در صفحه ي قبل عكس رو آپلود مي كنه و بعد Id كاربر رو مي فرسته به اين صفحه، حالا براي نمايش عكس تو اين صفحه چه جوري ميشه فهميد عكس كاربر چه نوعي داره؟

online_mansoor2007
شنبه 15 فروردین 1388, 17:53 عصر
KavoshGar_ir واقعا خسته نباشي !!
اين كدي كه شما نوشتي فقط پسوند فايل رو معلوم ميكنه نه فرمت
البته به نظر من همين روش منطقي ترين راهه و اگه خطايي حين عمليت رخ داد با پيغامي مناسب به كاربر نشان داد .
چون تشخيص فرمت فايل كار راحتي نيست ( البته من خودم كار نكردم و شايدم راحت باشه !! :لبخند:)

جدی می گی؟؟؟!!!! میشه شما فرق پسوند فایل و فرمت فایل رو بفرمایید و بفرمایید بین پسوند فایل و فرمتش چه تفاوتی وجود داره؟؟؟ !!!!!!!!!!!!!!!!! و این فرمت فایل چه کاری انجام می تونه بده که پسوندش نمیتونه؟ !!!!!!!!!

bill_geits
شنبه 15 فروردین 1388, 18:01 عصر
من همين اول بگم كه در زمينه asp.net اصلا حرفه اي نيستم و خوشحال ميشم اگه بزرگان اين رشته حرفام نقد كنند و به چالش بكشن.
#kaveh-c جان از مشكلت پيداست كه زياد مشكل سختي نيست و حالا نميدونم چرا بچه هاي اين تالار نميان جواب بدن ( شايد كلاس كاريشونو مياره پايين :متفکر: )

در هر حال به نظر من ميتوني نام و مسير فايل عكس رو همراه با id فرد به صفحه ي جديد ارسال كني و يا از سشن ها استفاده كني.
راستي اگه در صفحه اول مسير را توي بانك ريختي ميتوني از توي بانك هم بخواني كه البته افت كارايي داره.

من نفهميدم نوع فايل رو برا چي ميخواي بدوني !! :عصبانی++:

bill_geits
شنبه 15 فروردین 1388, 18:06 عصر
جدی می گی؟؟؟!!!! میشه شما فرق پسوند فایل و فرمت فایل رو بفرمایید و بفرمایید بین پسوند فایل و فرمتش چه تفاوتی وجود داره؟؟؟ !!!!!!!!!!!!!!!!! و این فرمت فایل چه کاری انجام می تونه بده که پسوندش نمیتونه؟ !!!!!!!!!

online_mansoor2007 از شما ديگه بعيده اين حرفا بزنيد !!
يعني شما ميگي بين پسوند فايل با فرمتش تفاوتي نداره ؟؟!!
يهني شما ميگي اگه يه فايل موسيقي هم پسوندشو .jpg كني عكس ميشه ؟!!!

online_mansoor2007
شنبه 15 فروردین 1388, 18:27 عصر
online_mansoor2007 از شما ديگه بعيده اين حرفا بزنيد !!
يعني شما ميگي بين پسوند فايل با فرمتش تفاوتي نداره ؟؟!!
يهني شما ميگي اگه يه فايل موسيقي هم پسوندشو .jpg كني عكس ميشه ؟!!!

چه چیزا می گی مهندس !!!!!!! یعنی شما هنوز اینو نمی دونی که پسوند یک فایل نمایانگر هویت و فرمت اون فایل هست ؟؟؟ ما فایل موسیقی با پسوند .JPG هم مگه داریم یا می تونیم داشته باشیم !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!

bill_geits
شنبه 15 فروردین 1388, 19:44 عصر
به نظر من بحث داره به حاشيه كشيده ميشه !!
بهتره به جاي اين صحبتا جواب سوال اصلي رو پاسخ بديد.
منم از همون اول گفتم كه چك كردن پسوند كفايت ميكنه ولي خوب ممكنه يه كاربر خودش پسوند فايل رو عوض كنه كه مسلما هنگام استفاده از اون فايل خطايي رخ ميده ( كه معمولا اين خطا به ضرر خود كاربر تمام ميشه :گریه:)

kaveh-C#
شنبه 15 فروردین 1388, 20:24 عصر
آقا خواهشن دعوا نكنين:عصبانی++:
بابا وقتي كه فابل آپ ميشه مياد توي يك شاخه بنام"/image/users/~". اصلا نه نام و نه آدرس فايل رو نمي خوام ذخيره كنم تو بانك . نام فايل در حقيقت همون id كاربره .آدرس اون هم مشخصه . حالا با اين مقدمه من زماني كه عكس رو مي خوام نشون بدم همه چيز رو مي دونم به غير از فرمت عكس ؟

شايد اين كد منظورم بهتر برسونه.اين كد فقط اگه كاربر عكسش jpgباشه نشون ميده.

محض رضاي خدا جواب بدين:گریه:




.
.
.
SqlCommand cm=newSqlCommand();
cm.CommandText = "select * from Users where user_id=" + Request["uid"];
cm.Connection=cn;


SqlDataReader rs=cm.ExecuteReader();
if(rs.Read())
{
if (Convert.ToBoolean(rs["User_HasPicture"])){


Image1.ImageUrl = "~/image/users/" + Request["uid"] + ".jpg";


}
else
Image1.ImageUrl = "~/image/0.jpg";

online_mansoor2007
شنبه 15 فروردین 1388, 20:30 عصر
دوست عزیز شما باید اطلاعات تصویر رو در بانک ذخیره کنید . این ساده ترین و منطقی ترین کار هست . چرا سعی دارید لقمه را بپیچونید؟؟؟ شما پسوند تصویر را هم همون موقع که اطلاعات را ذخیره می کنید در بانک ذخیره کنید .

Amir Taghavi
یک شنبه 16 فروردین 1388, 02:29 صبح
تمام فایل های دریافتی رو با یک پسوند خاص مثلا jpg ذخیره کن. حالا تصویر هر فرمتی میخواد داشته باشه!

Payman62
چهارشنبه 15 خرداد 1392, 14:01 عصر
سلام.

چه چیزا می گی مهندس !!!!!!! یعنی شما هنوز اینو نمی دونی که پسوند یک فایل نمایانگر هویت و فرمت اون فایل هست ؟؟؟ ما فایل موسیقی با پسوند .JPG هم مگه داریم یا می تونیم داشته باشیم !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!

بله که میتونیم داشته باشیم.
bill_geits کاملا درست میفرمایند.

امکان داره شخصی پسوند فایل رو به طور دستی عوض کرده و به mp3 تغییر داده باشه. حالا احتمال چنین اتفاقی کمه که بیفته. اما در مورد فایل png برای خود من پیش اومده.

عکس رو از داخل word با پسوند jpg ذخیره کردم. در حالی که فرمت اصلی عکس png بود و من خبر نداشتم.
در بخش سرور ساید سایتم توسط دستور Path.GetExtension پسوند فایل رو چک میکردم و اگه jpg نبود کانورتش میکرد. اما چون یه عکس png با حجم بسیار بالا با پسوند jpg ذخیره شده بود این کانورت انجام نمیشد. عکسی که میتونست تا 40 کیلو بایت کاهش حجم داشته باشه با حجم 700 کیلو بایت در سایت قرار گرفته بود و سایت رو کند کرده بود.
مشکل این جا بود که یکی 2 تا هم نبودن. اسلایدر بود و کلی عکس.
بعد متوجه شدم که باید فرمت و ماهیت اصلی فایل رو چک کنم نه پسوند ظاهریش رو.

دستور زیر jpg بودن فایل رو با توجه به فرمتش و بدون توجه به پسوندش چک میکنه:



System.Drawing.Image MyImageFile = System.Drawing.Image.FromFile(FileName);
if (System.Drawing.Imaging.ImageFormat.Jpeg.Equals(My ImageFile.RawFormat))
{
//Code
}