PDA

View Full Version : نحوه ی بررسی جنس فایل انتخابی برای آپلود بدون در نظر گرفتن پسوند



majid_darab
یک شنبه 23 اسفند 1388, 04:28 صبح
[how check truely images(without extension) format before upload]
با سلام بر شما دوستان عزیز و گرامی :
من می خواستم بدونم چه طوری می تونم از دوکانال سرورساید یا کلاینت ساید جنس فایل انتخابی برای آپلود را بدون در نظر گرفتن پسوند بررسی کنم.
ما دراینجا قضیه رو محدود به مثلا عکس ها و مثلا فرمت jpg می کنیم.
کنترلی که من دارم استفاده می کنم یکی از کنترل های تلریک به نام RadUpload می باشد.
بر اساس توضیحاتی که برای این کنترل وجود دارد می توان extension فایل رو بررسی کرد و به کاربر اعلام نمود که چنانچه پسوند jpg نباشد عکسشو تعویض و یا تبدیل نماید.
حال فرض بفرمایید یه انسان کج مخی بیاید و مثلا فایل ورد رو با پسوند jpg در کنترل مورد نظر که فرقی نمی کنه چی باشه انتخاب کنه...
خوب حالا اینجا چه طوری میشه جنس واقعی فایلو پیدا کرد و به کاربر اخطار داد؟
پرواضح است که عکس مزبور (فایل ورد) در سرور ذخیره نمی گردد ....
اما من در کد save عکس خود کدهایی دارم برای تغییر فرمت و سایز عکس به صورت دلخواه و خوب وقتی جنس اصلی ، عکس نباشد ارور خواهد داد.
بر طبق بررسی که انجام دادم فکر کردم مفهومی به نام MimeType که مخصوص بورزرها می باشد می تواند در اینجا به کار آید.
اما ظاهرا این مفهوم هم با extension کار می کند و با تعویض آن گول می خورد.
با تشکر

hadi000333
یک شنبه 23 اسفند 1388, 06:35 صبح
سلام
برای فایل تصویر کار راحته .البته نمیشه گفت حتما از نوع jpg باشه ولی تصاویر خیلی راحت با کلاس
Bitmap به هم تبدیل میشه .

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

System.Drawing.Image FullIMG = System.Drawing.Image.FromStream(fileUploader.Poste dFile.InputStream);

fileUploader = FileUpload

ولی برای بقیه فکر نمی کنم راهی باشه که مطمئن شد. پسوند فایل با محتواش مطابقت داره.

AhoO-sh
یک شنبه 23 اسفند 1388, 10:17 صبح
کد زیر ماهیت فایل رو چک میکنه


if ((oHttpPostedFile.ContentType.ToUpper() != "IMAGE/JPEG") && (oHttpPostedFile.ContentType.ToUpper() != "IMAGE/PJPEG"))
{
lblMesage.Visible = true;
lblMesage.Text = "شما فقط مجاز به آپلود فایل های JPG هستید.";
}

Mahdi-563
یک شنبه 23 اسفند 1388, 15:10 عصر
يه راه هست اونم اين كه هدر فايل را چك كني هر چند قابل تغيير

اين نگراني شما مر بوط به PHP مي شه نه دات نت

Peyman.Gh
یک شنبه 23 اسفند 1388, 15:19 عصر
دوستمون در پست شماره 3 درست اشاره کردن به این صورت دیگر کاربر با تغییر پسوند فایل نمیتوند فایل مورد نظر را ارسال نماید.

majid_darab
یک شنبه 23 اسفند 1388, 17:25 عصر
دوستمون در پست شماره 3 درست اشاره کردن به این صورت دیگر کاربر با تغییر پسوند فایل نمیتوند فایل مورد نظر را ارسال نماید.


با سلام :
باید بگم که به نظر میومد پست این دوست عزیزمون کارساز باشد...
اما این بحث ContentType همون بحث MimeType (در کنترل RadUpload به آن اشاره شده بود) است که من در پست اول به اون اشاره کردم و کنترل آپلود ما با تغییر پسوند گول می خورد و ContentType رو به صورت IMAGE/JPEG در نظر می گیره.(البته upper هم انجام شد)
به طور مثال کدی که دوست ما گذاشتن برای من که از RadUpload (تلریک) استفاده می کنم به صورت زیر در اومد:

if ((ruPersonelPixInvwPersonelEdit.UploadedFiles[0].ContentType.ToUpper() != "IMAGE/JPEG") && (ruPersonelPixInvwPersonelEdit.UploadedFiles[0].ContentType.ToUpper() != "IMAGE/PJPEG"))
{
Label3.Visible = true;
Label3.Text = "شما فقط مجاز به آپلود فایل های JPG هستید.";
} وباید بگم که جنس فایل تکست تغییر پسوند داده شده را IMAGE/JPEG تشخیص می ده و پیغام شلیک نمی شه...
Is there any idea?
با تشکر


============================================



سلام
برای فایل تصویر کار راحته .البته نمیشه گفت حتما از نوع jpg باشه ولی تصاویر خیلی راحت با کلاس
Bitmap به هم تبدیل میشه .

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

System.Drawing.Image FullIMG = System.Drawing.Image.FromStream(fileUploader.Poste dFile.InputStream);fileUploader = FileUpload

ولی برای بقیه فکر نمی کنم راهی باشه که مطمئن شد. پسوند فایل با محتواش مطابقت داره.

اما درمورد روشی که این دوستمون فرمودند ، با این حقه میشه لااقل در مورد فایل عکس کاری انجام داد.
فقط بی زحمت راهنمایی بفرمایید که من چگونه می توانم جلوی ارور خود browser رو بگیرم و به کاربر به جاش ارور خودمو نشون بدم؟چون زمانی که به اجرای این کد می رسیم چنانچه جنس فایل از نوع عکس نباشد ما از وب سایتمون خارج و به صفحه ی ارور مربوطه هدایت می شویم.
با تشکر

Peyman.Gh
یک شنبه 23 اسفند 1388, 17:30 عصر
خوب از FileUpload استفاده کنید.

majid_darab
یک شنبه 23 اسفند 1388, 17:47 عصر
خوب از FileUpload استفاده کنید.

آخه این کنترلی که دارم استفاده می کنمو اگه کار کرده بودید ازش دل نمی کندید.
این قدر قابلیت داره که نگو و نپرس...
ار اسکین گرفته تا event های سمت کلاینت که به راحتی میشه در بعضی موارد به کاربر سمت خود کلاینت پیام مورد نظرو داد.
درثانی fileupload محدودیت حجمی از نظر فایل های آپلودی دارد و در مورد برخی از فایل ها با وجود اعمال تغییرات لازم در web.config مشکلات زیادی به وجود می آورد.
بنا به دلایل فوق و دلایل بی شمار دیگری که از قابلیت های RadUpload وجود دارد من هیچوقت سراغ فایل آپلود نمی روم.
با تشکر


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

Peyman.Gh
یک شنبه 23 اسفند 1388, 17:52 عصر
نظر شماست.
اما درباره با حجم ارسالی کاملاً مشکلی ندارد.
و در اون مورد هم که اگر پسوند فایل ها را تغییر دهیم FileUpload دور نمیخورد و اجازه بارگزاری فایل را نمیدهد.

موفق باشید.

majid_darab
یک شنبه 23 اسفند 1388, 18:26 عصر
نظر شماست.
اما درباره با حجم ارسالی کاملاً مشکلی ندارد.
و در اون مورد هم که اگر پسوند فایل ها را تغییر دهیم FileUpload دور نمیخورد و اجازه بارگزاری فایل را نمیدهد.

موفق باشید.



خوب دوست عزیز باید بگم که تعصّبی برای استفاده از radupload وجود ندارد.اما این کنترل خودش یک ولیدیتور داخلی داره که اجازه ی آپلود فایل تغییر پسوند داده شده را نمی دهد که خوب نمی دونم از چه روشی برای این کار استفاده می کنه!
اما مشکلی که داره اینه اگر مثلا شما از یک progressarea کنار اون استفاده کرده باشید اون موقع آپلود فایل تغییر پسوند داده شده فعال می شود و کاربر فکر می کنه فایل تغییر پسوند داده شدش داره آپلود می شه ، در حالی که فایلی سمت سرور ذخیره نمی گردد...
اما در مورد فایل آپلود میشه بفرمایید حداکثر حجم فایلی که میشه باهاش آپلود کرد چقدره؟
در مورد RadUpload باید بگم که تا بیشتر از 2 گیگ رو با دستکاری در webconfig ساپورت می کنه ؟ (یعنی تا دو گیگ رو خودم تست کردم ، اما بیشترو هنوز تست نکردم)
با تشکر

Peyman.Gh
یک شنبه 23 اسفند 1388, 18:36 عصر
<system.web>
<httpRuntime executionTimeout="240" maxRequestLength="1048576" />
</system.web> در اینجا ماکزیمم حجم فایل ارسالی را 1 گیگ بایت قرار داده ام.

Mostafa_Dindar
یک شنبه 23 اسفند 1388, 18:58 عصر
http://barnamenevis.org/forum/showpost.php?p=887716&postcount=2

majid_darab
یک شنبه 23 اسفند 1388, 19:22 عصر
<system.web>
<httpRuntime executionTimeout="240" maxRequestLength="1048576" />
</system.web> در اینجا ماکزیمم حجم فایل ارسالی را 1 گیگ بایت قرار داده ام.


دست شما درد نکنه به خاطر توجه به این فروم و بازبینی آن و فیلم های آموزشی که همین الان چند تاشونو دانلود کردم.
اما جسارتاً آیا شما این 1 گیگ رو تست کرده اید (روی وب سایت سوار شده رو سرور)
قطعاً پس از سوار کردن وب سایت مشکلاتی برای شما ایجاد خواهد شد که تنظیمات iis هم برای شما راه گشا نخواهند بود.
اما در مورد radupload این مشکلات وجود ندارد و با حداقل برای تمام موارد احتمالی راه حلی پیش روی شما گذاشته است ...
با تشکر

Milad Mohseny
یک شنبه 23 اسفند 1388, 20:15 عصر
http://barnamenevis.org/forum/showpost.php?p=887716&postcount=2

اين لينك رو ديدم تو اين لينك پسوند فايل بررسي شده كه اگه كاربر دستي پسوند txt رو به jpg تغيير بده سيستم متوجه نميشه. بحث اين تاپيك اينه كه جلوي اينكارو بگيريه

Mostafa_Dindar
یک شنبه 23 اسفند 1388, 21:41 عصر
اين لينك رو ديدم تو اين لينك پسوند فايل بررسي شده كه اگه كاربر دستي پسوند txt رو به jpg تغيير بده سيستم متوجه نميشه. بحث اين تاپيك اينه كه جلوي اينكارو بگيريه

بله . شما نبايد به پسوند فايل اعتماد كنيد . وقتي پسوند يك فايل رو تغير ميدهيد آن پسوند ، پسوند اصلي آن فايل خواهد شد و با روشي كه گفتم نميتوان پسوند ابتدايي ( يا حقيقي اون ) رو بدست آورد .

يك راه پيشنهادي ميتونه اين باشه كه چند بايت اول فايل رو بدست بيارين . چون چند بايت اول هر فايل با توجه به نوع فايل الگوي مشخصي دارد ميتوانيد به file-type دسترسي پيدا كنيد .

File magic numbers (http://www.astro.keele.ac.uk/oldusers/rno/Computing/File_magic.html)

FILE SIGNATURES TABLE (http://www.garykessler.net/library/file_sigs.html)

با استفاده از دو آدرس بالا ميتونيد به الگوي چند بايت اول فرمت فايل مورد نظرتون دسترسي داشته باشيد
و همچنين ميتونيد با كدي مشابه زير فرمت فايل رو با الگو ها برسي كنيد :

byte[] jpg = new byte[] { 0xFF, 0xD8, 0xFF, 0xE0 };
bool match = true;
for (int i = 0; i < jpg.Length; i++)
{
if (jpg[i] != b[i])
{
match = false;
break;
}
}

Peyman.Gh
یک شنبه 23 اسفند 1388, 21:56 عصر
عزیزان اول امتحان کنید و بعد نظر دهید :


if(FileUpload1.HasFile)
if(FileUpload1.PostedFile.ContentType=="image/pjpeg"){
FileUpload1.SaveAs(Request.PhysicalApplicationPath + FileUpload1.FileName);
}با تغییر نام یک فایل ببینید که آیا بارگزاری میشود یا نه !

موفق باشید.

Mostafa_Dindar
یک شنبه 23 اسفند 1388, 22:23 عصر
عزیزان اول امتحان کنید و بعد نظر دهید :


if(FileUpload1.HasFile)
if(FileUpload1.PostedFile.ContentType=="image/pjpeg"){
FileUpload1.SaveAs(Request.PhysicalApplicationPath + FileUpload1.FileName);
}با تغییر نام یک فایل ببینید که آیا بارگزاری میشود یا نه !

موفق باشید.


از قبل امتحان شده بود عزيز دل برادر:چشمک: . شما هم امتحان كنيد . اينطور جواب نميدهد

Peyman.Gh
یک شنبه 23 اسفند 1388, 22:40 عصر
از قبل امتحان شده بود عزيز دل برادر:چشمک: . شما هم امتحان كنيد . اينطور جواب نميدهد


اين لينك رو ديدم تو اين لينك پسوند فايل بررسي شده كه اگه كاربر دستي پسوند txt رو به jpg تغيير بده سيستم متوجه نميشه. بحث اين تاپيك اينه كه جلوي اينكارو بگيريهدوستان اول امتحان کنید و بعد نظر دهید.فایل ضمیمه را ببینید.
موفق باشید.

ehsan2007
یک شنبه 23 اسفند 1388, 23:19 عصر
به هر حال فایل ضمیمه را ببینید.
من تست کردم درست جواب میداد

mehdi.mousavi
یک شنبه 23 اسفند 1388, 23:34 عصر
سلام.
استفاده از ContentType روش رسمی انجام اینکار هستش، اما روشی که Lastphoenix هم پیشنهاد کردن، میتونه در فاز بعدی انجام بشه.

بعنوان مثال، ممکنه شما علاقمند باشید بدونید فایل Image ای که Upload شده، JPEG هست یا خیر. اگر JPEG بود (که از روی ContentType تشخیص میدید)، در مرحله بعد میتونید Header فایل رو بخونید، و بین استانداردهای متفاوت JPEG مثل JPEG2000 و JPEG XR و ... البته لزوما این اطلاعات در ابتدای فایلها قرار نمیگیره و برای استانداردها و فایلهای متفاوت میتونه متفاوت باشه.

موفق باشید.

Peyman.Gh
یک شنبه 23 اسفند 1388, 23:38 عصر
خدمت دوستان عرض کردیم اما دوستان تاکیید دارند که روشی که من ذکر کردم جوابگو نیست.

موفق باشید .

Mostafa_Dindar
یک شنبه 23 اسفند 1388, 23:45 عصر
دوستان اول امتحان کنید و بعد نظر دهید.فایل ضمیمه را ببینید.
موفق باشید.

وقتي پسوند فايل رو عوض ميكنيد ContentType عوض ميشه . درصورتي كه شما يك فايل متني رو به jpg تغير دهيد ContentType مقدار image/jpeg خواهد داشت يا به pdf تغير دهيد ContentType مقدار application/pdf خواهد داشت . پس با تغير پسوند فايل در واقع ContentType فايل آپلود شده رو عوض ميكنه.
ولي دقت داشته باشيد كهimage/jpeg با image/pjpeg كه شما براي شرط گذاشتيد متفاوت است . اگر شرط ContentType رو تنها image/pjpeg بگذاريد درست است كه فايلهاي غير عكسي و غير jpg اي رو تشخيص خواهد داد ولي همه عكسهاي jpg رو قبول نميكند .

من مطمئن نيستم pjpeg چه تفاوتي با jpeg داره . ولي تصور ميكنم عكسهايي كه Progressive نيستند از نوع jpeg هستند . من تعداد زيادي عكس رو امتحان كردم و بعضي از اونهايي كه Progressive نبودند در ContentType مقدار image/jpeg داشتند كه در شرط شما صدق نميكرد .

Peyman.Gh
یک شنبه 23 اسفند 1388, 23:57 عصر
دوست عزیز در حالت کلی با تغییر نام دادن به صورت دستی امکان ندارد که Content Type تغییر کنید.

پس دوستان پذیرفتند با تغییر نام امکان بارگزاری وجود ندارد :لبخند:

(ناراحت هم نشید شوخی میکنیم همتون استاد ما هستید :چشمک:)

Mostafa_Dindar
دوشنبه 24 اسفند 1388, 00:24 صبح
دوست عزیز در حالت کلی با تغییر نام دادن به صورت دستی امکان ندارد که Content Type تغییر کنید.

پس دوستان پذیرفتند با تغییر نام امکان بارگزاری وجود ندارد :لبخند:

(ناراحت هم نشید شوخی میکنیم عزیزان استاد ما هستند :چشمک:)

عزيز دل من شما متوجه صحبت من نشديد . اجاز بدين واضحتر بگم

كد شما يعني :

if (filUpload.HasFile)
if (filUpload.PostedFile.ContentType == "image/pjpeg")
{
filUpload.SaveAs(Request.PhysicalApplicationPath + filUpload.FileName);
}

در صورتي كه كاربر فايلي را تغير نام دهد و بخواهد به جاي عكس jpg ارسال كند موفق نخواهد بود . يعني كد شما جلوي اين عمل موزيانه كاربران را خواهد گرفت . ( به قول خودتون نميتونه دور بزنه ) ولي همانطور كه گفتم شرط شما همه فايلهاي jpg رو قبول نميكنه . و اين يك ضعف هست كه فايلهاي jpg اي هستند كه شرط شما اونها رو رد ميكنه .

ولي در مورد

پس دوستان پذیرفتند با تغییر نام امکان بارگزاری وجود ندارد :لبخند:


مساله اينه كه اگر هدف تنها اين باشه كه فايلهاي غير jpg اي امكان بارگزاري نداشته باشند كد شما درسته . ولي اگر مساله تشخيص نوع و فرمت فايل از روي ContentType باشه . كه شما خودتون يك فايل متني رو با چندين فرمت مثل .gif , .pdf , ... امتحان كنيد و ببينيد كه ContentType اونها عوض ميشه يا نه !؟ كه من امتحان كردم و عوض شد .

Peyman.Gh
دوشنبه 24 اسفند 1388, 00:31 صبح
شما خودتون يك فايل متني رو با چندين فرمت مثل .gif , .pdf , ... امتحان كنيد و ببينيد كه ContentType اونها عوض ميشه يا نه !؟ كه من امتحان كردم و عوض شد .نه چنین چیزی نیست دوست عزیز ! بازهم پیشنهاد میدم فایل ضمیمه را ببینید.

mehdi.mousavi
دوشنبه 24 اسفند 1388, 00:49 صبح
سلام.
میدونید مشکل چیه؟ احتمالا LastPhoenix داره با Firefox تست میکنه و Peyman.Gh با Internet Explorer. در واقع سوال اینه که ContentType رو کی Set میکنه؟ جواب: مرورگر شما!

Internet Explorer اگر دنباله فایل JPG رو به TXT هم تغییر بدید، بازهم ContentType مربوط به JPG رو بر میگردونه، در صورتیکه Firefox، از ContentType مربوط به Text استفاده میکنه. :) پس هر دوتون درست میگید...

موفق باشید.

Mostafa_Dindar
دوشنبه 24 اسفند 1388, 00:51 صبح
نه چنین چیزی نیست دوست عزیز ! بازهم پیشنهاد میدم فایل ضمیمه را ببینید.

ويدئوي شما رو نگاه كردم . من با فايرفاكس 3.6 و همچنين IE 7 امتحان كردم دقيقا مخالف ويدئوي شما نتيجه داد .

شايد بسته به مرورگر تفاوت داشته باشد . شما با مرورگرهايي كه من گفتم امتحان كنيد . دوستان ديگه هم امتحان كنند . اگر بقيه حالت شما رو داشتند من يك ويدئو از مثال خودم درست ميكنم و ميزارم .

ويرايش :
------------------------------------------------------
من پست آقاي موسوي رو نديده بودم . همانطور كه حدس ميزدم آقاي موسوي هم احتمال رو به مرورگرها دادند . تو ويدئوي شما كه نگاه ميكردم شما از IE 6 استفاده ميكردي . پس در صورتي كه كابر از مرورگري غير از IE6 ( يا حداقل از IE7 , Firefox 3.6 كه من تست كردم ) استفاده كنه اون شرط شما هم به قول خودتون دور ميخوره .

Peyman.Gh
دوشنبه 24 اسفند 1388, 01:09 صبح
به نتیجه رسیدیم که :
این شرط

if (FileUpload1.PostedFile.ContentType == "image/pjpeg")فقط در IE 6.0 کار میکند در فایر فاکس با تغییر پسوند به صورت دستی این شرط هم از بین میره و واقعی نیست.

در اینجا IE 6.0 در واقع صادق تره !
پس مرور گر این صحت فایل ارسالی را تایید میکند.
موفق باشید.

majid_darab
دوشنبه 24 اسفند 1388, 07:24 صبح
وقتي پسوند فايل رو عوض ميكنيد ContentType عوض ميشه . درصورتي كه شما يك فايل متني رو به jpg تغير دهيد ContentType مقدار image/jpeg خواهد داشت يا به pdf تغير دهيد ContentType مقدار application/pdf خواهد داشت . پس با تغير پسوند فايل در واقع ContentType فايل آپلود شده رو عوض ميكنه.
ولي دقت داشته باشيد كهimage/jpeg با image/pjpeg كه شما براي شرط گذاشتيد متفاوت است . اگر شرط ContentType رو تنها image/pjpeg بگذاريد درست است كه فايلهاي غير عكسي و غير jpg اي رو تشخيص خواهد داد ولي همه عكسهاي jpg رو قبول نميكند .

من مطمئن نيستم pjpeg چه تفاوتي با jpeg داره . ولي تصور ميكنم عكسهايي كه Progressive نيستند از نوع jpeg هستند . من تعداد زيادي عكس رو امتحان كردم و بعضي از اونهايي كه Progressive نبودند در ContentType مقدار image/jpeg داشتند كه در شرط شما صدق نميكرد .




سلام دوست عزیز :
اگر اولین پست این تاپیک رو بخونید متوجه می شوید که من به موضوع MimeType اشاره کردم که در واقع همون ContentType خودمونه و اونجا نوشته بودم که با تغییر پسوند MimeType یا ContentType هم تغییر می کنه که نباید این طور باشه و من این موضوع رو به کرات در بروزرهای مختلف تست کردم ...
این یعنی اینکه من با نظر شما صددرصد موافق هستم.
البته شاید بروزری که آقا پیمان استفاده می کنه برای ایشون جواب بده ، اما در حال حاضر برای ما ملاک ie8 , فایرفاکس 3.5 به بالا می باشد که رو اینا جواب نمی ده...
اما در مورد فرق image/jpeg با image/pjpeg باید بگم که این دو نوع محتوا مربوط به تشخیص بروزرهاست که ظاهرا image/pjpeg مخصوص فایر فاکس و image/jpeg مخصوص ie.
پس در اینگونه موارد در شرطمون باید همه ی این کانتنت تایپ ها اعمال شوند.
من نمی دونم که چرا content Type با تغییر پسوند عوض می شه و به نظرم تنها راه حل موضوع اینه که بریم سراغ هدر فایل ....
البته کدی که دوستمون گذاشتن رو هنوز تست نکردم
با تشکر

Peyman.Gh
دوشنبه 24 اسفند 1388, 11:39 صبح
خوب در واقع من با IE6.0 امتحان میکردم و جوابگو بود ولی دوستان یه این نکته اشاره کردن که در مرورگرهای دیگر جوابگو نیست.پست شماره 28 http://barnamenevis.org/forum/showpost.php?p=933055&postcount=28 توضیح دادم که این راه منطقی و قاطع ای برای تشخیص فایل فرستاده شده نیست.
خیلی از سایت های اشتراک عکس با همین تغییر پسوند دور میخورند.

hadi000333
دوشنبه 24 اسفند 1388, 13:27 عصر
فقط بی زحمت راهنمایی بفرمایید که من چگونه می توانم جلوی ارور خود browser رو بگیرم و به کاربر به جاش ارور خودمو نشون بدم؟چون زمانی که به اجرای این کد می رسیم چنانچه جنس فایل از نوع عکس نباشد ما از وب سایتمون خارج و به صفحه ی ارور مربوطه هدایت می شویم.



try
{
System.Drawing.Image FullIMG = System.Drawing.Image.FromStream(fileUploader.Poste dFile.InputStream);
...

}
catch (Exception)
{

lblerr.Text = "خطا";
return;
}

از همه روش ها مطمئنتر هست.
چون شما میایید فایل رو به تصویر تبدیل می کنید.
خوب اگه فایل تصویر نباشه اینجا خطا می ده و به کاربر می گی فایل معتبر نیست.

majid_darab
شنبه 29 اسفند 1388, 09:03 صبح
با تشکر از همیاری و همّت شما دوستان عزیز...
در زیر لیستی از ContentType های موجود و توضیحی درباره ی آ ن براتون می ذارم ...
در این توضیح منظور از MimeType همان ContentType می باشد ...
لازم به ذکر است که موضوعی که دراین متن به آن اشاره شده است در مورد IE 8 و FireFox 3.5 or Higher کارایی ندارد و خوب لابد قبلاً کاربرد داشته که عنوان گردیده است.
در ضمن در پست های قبلی عنوان کرده بودم که image/jpeg مخصوص IE می باشد ، امّا همان طور که در متن گذاشته شده می بینید این نوع محتوا مخصوص FireFox است و بنابراین آن را تصحیح می نمایم.

به دلیل اینکه متن مزبور نامرتّب نشان داده می شد آن را در یک فایل ورد 2007 ضمیمه کردم.

با تشکر

Peyman.Gh
شنبه 29 اسفند 1388, 11:32 صبح
با تشکر از همیاری و همت شما دوستان عزیز...
در زیر لیستی از ContentType های موجود و توضیحی درباره ی آ ن براتون می ذارم ...
در این توضیح منظور از MimeType همان ContentType می باشد ...
لازم به ذکر است که موضوعی که

لیست رو جا انداختی :لبخند: D:

majid_darab
شنبه 29 اسفند 1388, 11:42 صبح
لیست رو جا انداختی :لبخند: D:


با عرض معذرت ...
داشتم روش کار می کردم ، امّا متأسّفانه سرعت اینترنتم به شدّت افت کرد و هر چی سعی کردم نتونستم لیستو بذارم و یا شاید دلیل دیگر آن می تواند طولانی بودن این لیست باشد.
دراسرع وقت پستو ویرایش می کنم.
با تشکر از توجّه شما
پیشاپیش عید نوروز مبارک باد

iman_ad
شنبه 29 اسفند 1388, 19:25 عصر
http://forums.asp.net/t/1514476.aspx
این ببینید
راستی کسی از سرویس های رایگان آنتی ویروس استفاده کرده؟

Mazda3
شنبه 04 اردیبهشت 1389, 02:45 صبح
سلام
برای فایل تصویر کار راحته .البته نمیشه گفت حتما از نوع jpg باشه ولی تصاویر خیلی راحت با کلاس
Bitmap به هم تبدیل میشه .

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

System.Drawing.Image FullIMG = System.Drawing.Image.FromStream(fileUploader.Poste dFile.InputStream);fileUploader = FileUpload

ولی برای بقیه فکر نمی کنم راهی باشه که مطمئن شد. پسوند فایل با محتواش مطابقت داره.
روانی شدم .... تا دیروز این کلاس مثل بنز کار میکرد و الانم ری سایت هام کار میکنه الان که اورژانس لازم دارم 6 ساعته من رو سر کار گذاشته ....

من JPG آپ میکنم اما ارور میده ... به همین خط هم گیر میده و میره واسه CATCH !!!!!:عصبانی++::عصبانی++: