2010-07-06 3 views
3

Я использую загрузку файлов, я хотел ограничить файлы, отображаемые в диалоговом окне, только изображениями. То есть «Файлы типа» в диалоговом окне должны быть .jpg, .jpeg, .gif, .bmp, .pngКак ограничить файлы типом изображения, используя загрузку файла в asp.net

ответ

0

Вы можете использовать regular expression validator.

+0

Я пробовал REV, но иногда он не принимает упомянутые расширения (например, jpg/gif/bmp/​​png). Поэтому я решил отфильтровать содержимое в диалоговом окне. –

+0

У вас нет большого контроля над этим диалоговым окном. Вы можете попробовать другое решение для загрузки с помощью Flash. –

0

Вы хотите сделать это двумя способами: один на клиенте для удобства использования, а затем один раз на сервере, чтобы защитить пользователей от отключения проверки на стороне клиента. Оба подхода описаны here.

2

You can't. Веб-браузеры don't allow вы должны сделать что-то вроде фильтрации списка по типу файлов или установить каталог по умолчанию для диалога загрузки файлов.

Как Дарин и Крис предложили, как только пользователь выбрал файл, вы можете использовать javascript для разбора имени файла и оповещения пользователя, если он не выглядит так, как будто файл имеет нужный тип. В зависимости от того, что вы собираетесь делать с файлом, вам следует подумать о том, чтобы сделать что-то на стороне сервера, чтобы убедиться, что файл имеет правильное изображение и not something bad .

В качестве альтернативы вы могли бы изучить использование Silverlight OpenFileDialog или, возможно, даже флэш-контроль. См. http://www.plupload.com, http://www.uploadify.com/, http://swfupload.org/ и т. Д.

-1

Эта функция используется, чтобы проверить, действительно ли файл, который пользователь хочет загрузить, является допустимым типом файла.

private bool IsValidFile(string filePath) 
    { 
     bool isValid = false; 

     string[] fileExtensions = { ".BMP", ".JPG", ".PNG", ".GIF", ".JPEG" }; 

     for (int i = 0; i < fileExtensions.Length; i++) 
     { 
      if (filePath.ToUpper().Contains(fileExtensions[i])) 
      { 
       isValid = true; break; 
      } 
     } 
     return isValid; 
    } 

Эта функция используется для проверки размера файла &. Если файл неверен, он вернет сообщение об ошибке.

private string ValidateImage(HttpPostedFile myFile) 
    { 
     string msg = null; 
     int FileMaxSize = Convert.ToInt32(ConfigurationManager.AppSettings["FileUploadSizeLimit"].ToString()); 
     //Check Length of File is Valid or Not. 
     if (myFile.ContentLength > FileMaxSize) 
     { 
      msg = msg + "File Size is Too Large."; 
     } 
     //Check File Type is Valid or Not. 
     if (!IsValidFile(myFile.FileName)) 
     { 
      msg = msg + "Invalid File Type."; 
     } 
     return msg; 
    } 
+0

это не будет работать до того, как файлы будут загружены, растрачивая время клиентов/пользователей. – BerggreenDK

+0

Можете ли вы объяснить это мне как? это проверяется на стороне сервера, и мой код работает без каких-либо проблем. –

+0

этот код проверяет ПОСЛЕ того, как клиент ждал загрузки. Это не помогает клиенту выбрать файл в диалоговом окне OpenFile на клиенте в браузере. Скажем, я хочу загрузить файл размером 20 Мб, тогда мне придется ждать, пока не будет загружено 20 Мб, прежде чем я получу фактическую ошибку из вашего кода. – BerggreenDK

0

Я знаю, что это очень старый, но с Fileuploads в asp. Если я хочу заблокировать контент, чтобы быть определенным типом, например, изображением или видео, я просто делаю содержимое содержимого типа контента.

if (FileUpload1.HasFile) { 

    if (FileUpload1.PostedFile.ContentType.Contains("image/")) { 
//rest of your logic 
    } 

} 
Смежные вопросы