PDA

View Full Version : مشکلی در آپلود تصویر روی سرور



nadia92
جمعه 24 مرداد 1393, 17:25 عصر
سلام دوستان


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

موقع عمل آپلود تمامی شرایطو درنظر گرفته و بررسی میکنم اگر درست بود آپلود میکنه ولی اگر یه کاربری یه فایل txt رو دستی تبدیل به jpg‌ کنه روی سایت آپلود میشه

برای جلوگیری از این کار هم از دستور:
FileUpload1.PostedFile.ContentType;

استفاده میکنم. اما این دستور در IE جواب میده ولی فایرفاکس و کروم و بقیه جواب نمیده. لطفا راهنمایی کنید. مرسی

nadia92
شنبه 25 مرداد 1393, 14:07 عصر
از دوستان کسی نیست جواب بده؟؟؟؟



هرکدی مینویسم تا فقط فایل jpg آپلود کنه جواب میده ولی وقتی دستی پسوندی رو به jpg تغییر میدم اصل فایل و نمیشناسه و فکر میکنه واقعا jpg هستش و آپلود میکنه.

خواهشا کمکم کنید

omid yeganeh
شنبه 25 مرداد 1393, 14:14 عصر
با سلام
داداش شما باید پسوند jpg رو واسه مرورگر IE اینطوری تعریف کنی PJPEG و برای موزیلا و بقیه مرورگرها JPEG




if ((strContentType != "IMAGE/JPEG") && // Firefox!
(strContentType != "IMAGE/PJPEG") && // Internet Explorer!

nadia92
شنبه 25 مرداد 1393, 14:22 عصر
با سلام
داداش شما باید پسوند jpg رو واسه مرورگر IE اینطوری تعریف کنی PJPEG و برای موزیلا و بقیه مرورگرها JPEG




if ((strContentType != "IMAGE/JPEG") && // Firefox!
(strContentType != "IMAGE/PJPEG") && // Internet Explorer!




سلام. امیدجان نظر شما صحیح ولی من کدو دور میزنم و یه فایل txt‌رو دستی به jpg تبدیل میکنم فایرفاکس و کروم گول میخورن آخهههههههههههههههههه:متعج ::متعجب::متعجب::گریه::گریه::گ یه:

یه کدی ، یه کامپوننتی یست که درست کار کنه؟؟؟؟

omid yeganeh
شنبه 25 مرداد 1393, 14:26 عصر
داداش من همین الان تست کردم تو هر سه مرورگر پیغام خطا رو میده شما یه بار دیگه با این کد تست کن





//ماهیت فایل را مورد بررسی قرار میدهیم //تا واقعا مشخص شده فایل با پسوند مورد نظر هست و یا عمدا رینیم شده است //جی پی جی کانتنت تایپ بیشتر از یکی است ولی در بقیه موارد اکثر یکی است string strContentType = oHttpPostedFile.ContentType.ToUpper();
if ((strContentType != "IMAGE/JPEG") && // Firefox! (strContentType != "IMAGE/PJPEG") && // Internet Explorer! (strContentType != "IMAGE/PNG") && (strContentType != "IMAGE/GIF"))
{ string strErrorMessage = "! پسوند فایل تغییر داده شده است "; lblOkMsg.Text = string.Empty; lblErrorMessages.Visible = true; lblErrorMessages.Text = strErrorMessage; return; }

nadia92
شنبه 25 مرداد 1393, 14:30 عصر
یعنی الان با این کد اگه دستی هم تغییر پسوند بدیم میشناسه نوع فایل و ؟؟؟

omid yeganeh
شنبه 25 مرداد 1393, 14:30 عصر
الان تست کردم درست بود داداش یه بار دیگه با این کد تست کن




//ماهیت فایل را مورد بررسی قرار میدهیم
//تا واقعا مشخص شده فایل با پسوند مورد نظر هست و یا عمدا رینیم شده است //جی پی جی کانتنت تایپ بیشتر از یکی است ولی در بقیه موارد اکثر یکی است
string strContentType = oHttpPostedFile.ContentType.ToUpper();
if ((strContentType != "IMAGE/JPEG") && // Firefox!
(strContentType != "IMAGE/PJPEG") && // Internet Explorer!
(strContentType != "IMAGE/PNG") &&
(strContentType != "IMAGE/GIF"))
{
string strErrorMessage = "! پسوند فایل تغییر داده شده است ";
return;}

nadia92
شنبه 25 مرداد 1393, 14:52 عصر
نه داداش جواب نمیده - یعنی روی این خط کل پروژم مونده ها:ناراحت:

در IE جواب میده ولی کروم و فایرفاکس گول میخورن

rezadana
شنبه 25 مرداد 1393, 14:54 عصر
سلام میتونی از کد زیر استفاده کنید.


string pach = Server.MapPath(@"~\picfm\");
String[] validex = { ".jpg", ".jpeg", ".gif", ".bmp", ".png" };
string ex = Path.GetExtension(FileUpload1.PostedFile.FileName) ;
if (Array.IndexOf(validex, ex.ToLower()) < 0)
{
Label1.Visible = true;
Label1.Text = "فایل شما معتبر نیست";
return;
}




www.rezalynda.ir

nadia92
شنبه 25 مرداد 1393, 15:01 عصر
مرسی از شما آقا رضا ولی این روش و بسادگی میشه دور زد.


دستی یه فایل txt رو به jpg تبدیل کنید ببینید کدتون جواب میده یا نه؟؟؟

nadia92
شنبه 25 مرداد 1393, 15:16 عصر
عجب !!!!!!!!!!!!!!


یعنی یه کدی نیست تا اجازه نده جز فایل jpg ، فایل دیگه ای آپلود نشه؟؟؟

omid yeganeh
شنبه 25 مرداد 1393, 15:26 عصر
داداش من از همون روش استفاده میکنم وقتی پسوند رو تغییر بدی پیغام "پسوند فایل تغییر داده شده رو میده" و اپلود نمیشه
منم توی اپلود عکسام این مشکل رو داشتم ولی با این کد رفع شد

nadia92
شنبه 25 مرداد 1393, 15:37 عصر
داداش میشه نمونه سورس و در یک پروژه ضمیمه کنی تا آپلود کنم؟؟؟

omid yeganeh
شنبه 25 مرداد 1393, 15:49 عصر
باشه داداش چند لحظه صبر کن الان ضمیمه میکنم...

omid yeganeh
شنبه 25 مرداد 1393, 16:05 عصر
این فایلو ضمیمه کردم ببین به دردت میخوره
122336

aminmousavi
شنبه 25 مرداد 1393, 16:09 عصر
سلام نادیا جان ، فکر کنم ! بهترین راه اینکه محتوی فایل ارسال شده رو برسی کنی نه تایپ و پسوند برای اینکار بنده پیشنهاد میکنم از کد زیر استفاده کن :



try{
System.Drawing.Image img = System.Drawing.Image.FromStream(FileUpload1.Posted File.InputStream);
//TRUE
}
catch{
//FALSE
}

nadia92
شنبه 25 مرداد 1393, 16:21 عصر
خب داداش این کد چی رو برمیگردونه؟؟؟ اصل ریشه فایل و؟؟؟ چطوری دریافتش کنم؟؟؟

nadia92
شنبه 25 مرداد 1393, 16:22 عصر
مرسی امیدجان . دست طلا:قلب:

aminmousavi
شنبه 25 مرداد 1393, 16:34 عصر
کامنت گذاشتم که :لبخند:
try,catch مثل if عمل میکنه ، اگر catch بره میشه else ، زیر کد
System.Drawing.Image im هم میشه بنده if ات
اگر محتوی فایل عکس نباشه اررور میده catch اجرا میشه ، اگر درست باشه ادامه try انجام میشه
برای ذخیره عکس دقیقا زیر System.Drawing.Image im دستور SaveAs رو میتونین بزارین

nadia92
شنبه 25 مرداد 1393, 16:42 عصر
کامنت گذاشتم که :لبخند:
try,catch مثل if عمل میکنه ، اگر catch بره میشه else ، زیر کد
System.Drawing.Image im هم میشه بنده if ات
اگر محتوی فایل عکس نباشه اررور میده catch اجرا میشه ، اگر درست باشه ادامه try انجام میشه
برای ذخیره عکس دقیقا زیر System.Drawing.Image im دستور SaveAs رو میتونین بزارین





دستت درد نکنه داداش - واقعا آقایی ، خیلی با حوصله و با منطق جواب میدی و به مقصد میرسونی


فدات شم مرسی هااااا:قلب: حل شد