مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

رضا نصیری

عضویت از 1392/10/01

اشکال در بررسی نوع فایل در آپلود

  • جمعه 24 مرداد 1393
  • 20:03
تشکر میکنم

سلام دوستان. خسته نباشد

 

من برای بررسی نوع فایلی که قراره آپلود شه از دستور زیر استفاده میکنم:

 

 if ( FileUpload1.PostedFile.ContentType != "image/jpeg" )
      {
        lblMassage.Text = " فایل باید فرمت jpg داشته باشد";
      }

 

ولی این دستور در IE‌ جواب میده ولی در فایرفاکس و کروم و ... بقیه جواب نمیده. وقتی یه فایل txt رو دستی jpg میکنم باز jpg میشناسه و آپلود میکنه درحالی که نباید آپلود کنهsad

 

خواهشا کمکم کنید - راه ، کد ، دستور دیگه ای نیست؟؟؟

پاسخ های این پرسش

تعداد پاسخ ها : 7 پاسخ
کاربر سایت

siyamak

عضویت از 1392/10/27

  • جمعه 24 مرداد 1393
  • 20:54
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;
        }
    }

 

کاربر سایت

رضا نصیری

عضویت از 1392/10/01

  • جمعه 24 مرداد 1393
  • 21:55
دوست عزيز اگه دستي پسوند فايل txt رو به jpg تبديل كنم نبايد آپلود كنه ،اين روش جواب ميده؟؟؟؟
کاربر سایت

رضا نصیری

عضویت از 1392/10/01

  • جمعه 24 مرداد 1393
  • 23:59

داداش دمت گرم ولی کار نکرد. فایل txt رو دستی jpg‌کردم آپلود کرد که

کاربر سایت

رضا نصیری

عضویت از 1392/10/01

  • شنبه 25 مرداد 1393
  • 10:57

آقا کسی نیییییییییییییییست یه کدی به من بده که فقط پسوند jpg آپلود کنه و بقیه رو آپلود نکنه؟؟؟؟

 

 

 

آقای مدائنی خواهشا کمکم کنید

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 25 مرداد 1393
  • 11:16

کلاس زیر رو استفاده کنید

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;
        }
    }
}

 

کاربر سایت

رضا نصیری

عضویت از 1392/10/01

  • شنبه 25 مرداد 1393
  • 13:14

استاد شرمنده میشه یه نمونه برا آپلود بذارین؟؟؟

 

 

 

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

ContentType در مرورگر IE در همه شرایط درست جواب میده و گول نمیخوره ولی در موزیلا و کروم و ...  با تغییر دستی پسوندها به jpg گول میخوره و آپلود میکنه

 

ممنونم میشم کمکم کنید.

کاربر سایت

رضا نصیری

عضویت از 1392/10/01

  • یکشنبه 26 مرداد 1393
  • 00:28

حل شد.

 

مرسی

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)