سلام دوستان. خسته نباشد
من برای بررسی نوع فایلی که قراره آپلود شه از دستور زیر استفاده میکنم:
if ( FileUpload1.PostedFile.ContentType != "image/jpeg" ) { lblMassage.Text = " فایل باید فرمت jpg داشته باشد"; }
ولی این دستور در IE جواب میده ولی در فایرفاکس و کروم و ... بقیه جواب نمیده. وقتی یه فایل txt رو دستی jpg میکنم باز jpg میشناسه و آپلود میکنه درحالی که نباید آپلود کنه
خواهشا کمکم کنید - راه ، کد ، دستور دیگه ای نیست؟؟؟
bool CheckFileType(string fileName) { string ext = Path.GetExtension(fileName); switch (ext.ToLower()) { case ".gif": return true; case ".png": return true; case ".jpg": return true; case ".jpeg": return true; default: return false; } }
داداش دمت گرم ولی کار نکرد. فایل txt رو دستی jpgکردم آپلود کرد که
آقا کسی نیییییییییییییییست یه کدی به من بده که فقط پسوند jpg آپلود کنه و بقیه رو آپلود نکنه؟؟؟؟
آقای مدائنی خواهشا کمکم کنید
کلاس زیر رو استفاده کنید
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text.RegularExpressions; using System.Web; namespace Barnamenevisan_MVC.Classes { public static class CheckContentImage { public const int ImageMinimumBytes = 512; public static bool IsImage(this HttpPostedFileBase postedFile) { //------------------------------------------- // Check the image mime types //------------------------------------------- if (postedFile.ContentType.ToLower() != "image/jpg" && postedFile.ContentType.ToLower() != "image/jpeg" && postedFile.ContentType.ToLower() != "image/pjpeg" && postedFile.ContentType.ToLower() != "image/gif" && postedFile.ContentType.ToLower() != "image/x-png" && postedFile.ContentType.ToLower() != "image/png") { return false; } //------------------------------------------- // Check the image extension //------------------------------------------- if (Path.GetExtension(postedFile.FileName).ToLower() != ".jpg" && Path.GetExtension(postedFile.FileName).ToLower() != ".png" && Path.GetExtension(postedFile.FileName).ToLower() != ".gif" && Path.GetExtension(postedFile.FileName).ToLower() != ".jpeg") { return false; } //------------------------------------------- // Attempt to read the file and check the first bytes //------------------------------------------- try { if (!postedFile.InputStream.CanRead) { return false; } if (postedFile.ContentLength < ImageMinimumBytes) { return false; } byte[] buffer = new byte[512]; postedFile.InputStream.Read(buffer, 0, 512); string content = System.Text.Encoding.UTF8.GetString(buffer); if (Regex.IsMatch(content, @"<script|<html|<head|<title|<body|<pre|<table|<a\s+href|<img|<plaintext|<cross\-domain\-policy", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant | RegexOptions.Multiline)) { return false; } } catch (Exception) { return false; } //------------------------------------------- // Try to instantiate new Bitmap, if .NET will throw exception // we can assume that it's not a valid image //------------------------------------------- try { using (var bitmap = new System.Drawing.Bitmap(postedFile.InputStream)) { } } catch (Exception) { return false; } return true; } } }
استاد شرمنده میشه یه نمونه برا آپلود بذارین؟؟؟
من هرچی کد مینویسم با تغییر دستی پسوندها به jpg عمل آپلود انجام میگیره. من فقط میخوام jpgآپلود شه.
ContentType در مرورگر IE در همه شرایط درست جواب میده و گول نمیخوره ولی در موزیلا و کروم و ... با تغییر دستی پسوندها به jpg گول میخوره و آپلود میکنه
ممنونم میشم کمکم کنید.
حل شد.
مرسی
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)