Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Вёрстка веб-сайтов > фильтр файлов input type=file


Автор: Andy_L20066 16.2.2009, 17:07
Привет, возник такой вопрос: а возможно ли в контроле <input type="file"/> задать тип файлов который хочешь выбирать... ну тоесть только рисунки или только текстовые файлы....
Вот читал что можна задать это дело через accept.... это дейсвительно единственный способ?

Автор: Dobermann 16.2.2009, 17:30
Маска для *.jpg
Код

<form method=post enctype=multipart/form-data>
<input type=file name=file style="position:absolute;left:-1000">
<script>
var shell
</script>
<input type=button value=Browse... onclick="
  shell = new ActiveXObject('wscript.shell')
  form.file.focus()
  shell.SendKeys('{TAB} %(n)*.jpg{ENTER}')">
<input type=submit>
</form>
<script>

Ну или чтобы от языка не зависить
Код

<form method=post enctype=multipart/form-data>
<input type=file name=file style="position:absolute;left:-1000">
<script>
var shell
</script>
<input type=button value=Browse... onclick="
  shell = new ActiveXObject('wscript.shell')
  form.file.focus()
  shell.SendKeys('{TAB} {TAB}{HOME}{DOWN}{DOWN}+({TAB})')">
<input type=submit>
<input type=file>
</form>
<script>

Цитата

Вот читал что можна задать это дело через accept.... это дейсвительно единственный способ?

Теоретически можно задать разве что MIME-type:
Код

<input type="file" accept="text/plain">

Но это ИМХО все браузеры просто игнорируют.

Автор: Andy_L20066 16.2.2009, 17:37
есть две страницы: на одной нужно чтобы при клике по кнопке Browse юзер мог выбрать только рисунки, тоесть чтобы в диалоге Сhoose File были доступны только рисунки... на другой странице чтобы при клике на Browse юзер мог выбрать только файлы с раширением *.txt... сейчас в диалоге Choose File можно выбырать какие хочешь файлы Files of type= All files...

Добавлено через 1 минуту и 36 секунд
Цитата(Dobermann @ 16.2.2009,  17:30)
Цитата(Andy_L20066 @  16.2.2009,  17:07 Найти цитируемый пост)
задать тип файлов который хочешь выбирать

Фильтр на рисунки нужен чтоли, не пойму?

Добавлено @ 17:36
Маска для *.jpg
Код

<form method=post enctype=multipart/form-data>
<input type=file name=file style="position:absolute;left:-1000">
<script>
var shell
</script>
<input type=button value=Browse... onclick="
  shell = new ActiveXObject('wscript.shell')
  form.file.focus()
  shell.SendKeys('{TAB} %(n)*.jpg{ENTER}')">
<input type=submit>
</form>
<script>

Ну или чтобы от языка не зависить
Код

<form method=post enctype=multipart/form-data>
<input type=file name=file style="position:absolute;left:-1000">
<script>
var shell
</script>
<input type=button value=Browse... onclick="
  shell = new ActiveXObject('wscript.shell')
  form.file.focus()
  shell.SendKeys('{TAB} {TAB}{HOME}{DOWN}{DOWN}+({TAB})')">
<input type=submit>
<input type=file>
</form>
<script>

использование ActiveX - не пойдет... надо чтобы работало как в Мозилле так и в ИЕ...

Автор: Dobermann 16.2.2009, 17:46
ACCEPT – конкретизирует тип файла. Используется только совместно с параметром TYPE="file". Значение задается в виде MIME-типа.
Код

Таблица MIME-типов

MIME Type                          Extension

animation/narrative                nml
application/activemessage
application/andrew-inset
application/applefile
application/atomicmail
application/dca-rft
application/dec-dx
application/dsptype                tsp
application/fastman                lcc
application/font-tdpfr             pfr
application/futuresplash           spl
application/mac-binhex40           hqx
application/mac-compactpro         cpt
application/macwriteii
application/mspowerpoint           pot pps ppt ppz
application/msword
application/news-message-id
application/news-transmission
application/octet-stream           bin class dms exe sea
application/oda                    oda
application/pdf                    pdf
application/postscript             ai eps ps
application/remote-printing
application/rtf                    rtf
application/slate
application/softvision             svi
application/wita
application/wordperfect5.1
application/x-authorware-bin       aab
application/x-authorware-map       aam
application/x-authorware-seg       aas
application/x-bcpio                bcpio
application/x-bzip2                bz2
application/x-calquick             cqk
application/x-cdlink               vcd
application/x-cocoa                cco
application/x-compress             Z
application/x-cpio                 cpio
application/x-csh                  csh
application/x-director             dcr dir dxr
application/x-dvi                  dvi
application/x-excel                xls
application/x-expandedbook         ebk
application/x-gtar                 gtar
application/x-gzip                 gz
application/x-hdf                  hdf
application/x-httpd-cgi            cgi
application/x-javascript           js ls mocha
application/x-koan                 skd skm skp skt
application/x-latex                latex
application/x-lzh                  lha lzh
application/x-mapserver            mps
application/x-mascot               mct
application/x-mif                  mif
application/x-netcdf               cdf nc
application/x-ns-proxy-auto-config pac
application/x-pixelscooter         mpp
application/x-pointplus            css
application/x-sh                   sh
application/x-shar                 shar
application/x-shockwave-flash      swf
application/x-sprite               spr sprite
application/x-spt                  spt
application/x-stuffit              sit
application/x-sv4cpio              sv4cpio
application/x-sv4crc               sv4crc
application/x-tar                  tar tgz
application/x-tcl                  tcl
application/x-tex                  tex
application/x-texinfo              texi texinfo
application/x-troff                roff t tr
application/x-troff-man            man
application/x-troff-me             me
application/x-troff-ms             ms
application/x-ustar                ustar
application/x-wais-source          src
application/x-xdma                 xdm xdma
application/zip                    zip
audio/basic                        au snd
audio/echospeech                   es
audio/midi                         kar mid midi
audio/mpeg                         mp2 mp3 mpga
audio/tsplayer                     tsi
audio/voxware                      vox
audio/x-aiff                       aif aifc aiff
audio/x-bamba                      aba
audio/x-chacha                     cha
audio/x-mio                        mio
audio/x-pn-realaudio               ra ram rm
audio/x-pn-realaudio-plugin        rpm
audio/x-twinvq                     vqf vql
audio/x-twinvq-plugin              vqe
audio/x-wav                        wav
chemical/x-csml                    csm
chemical/x-embl-dl-nucleotide      emb
chemical/x-gaussian-input          gau
chemical/x-mdl-molfile             mol
chemical/x-mopac-input             mop
chemical/x-pdb                     pdb
chemical/x-xyz                     xyz
i-world/i-vrml                     ivr
image/fif                          fif
image/gif                          gif
image/ief                          ief
image/jpeg                         jpe jpeg jpg
image/png                          png
image/tiff                         tif tiff
image/vasa                         mcf
image/x-cmu-raster                 ras
image/x-freehand                   fh fh4 fh5 fh7 fhc
image/x-jps                        jps
image/x-portable-anymap            pnm
image/x-portable-bitmap            pbm
image/x-portable-graymap           pgm
image/x-portable-pixmap            ppm
image/x-rgb                        rgb
image/x-xbitmap                    xbm
image/x-xpixmap                    xpm
image/x-xres                       swx
image/x-xwindowdump                xwd
message/external-body
message/news
message/partial
message/rfc822
multipart/alternative
multipart/appledouble
multipart/digest
multipart/mixed
multipart/parallel
plugin/listenup                    ptlk
plugin/wanimate                    waf wan
text/html                          htm html
text/plain                         txt
text/richtext                      rtx
text/tab-separated-values          tsv
text/x-setext                      etx
text/x-sgml                        sgm sgml
text/x-speech                      talk
text/x-vcard                       vcf
video/mpeg                         mpe mpeg mpg
video/quicktime                    mov qt
video/vnd.vivo                     viv vivo
video/x-bamba                      vba
video/x-msvideo                    avi
video/x-sgi-movie                  movie
video/x-tango                      tgo
video/x-vif                        vif
workbook/formulaone                vts
world/x-panoramix                  pan
x-conference/x-cooltalk            ice
x-world/x-d96                      d96 mus
x-world/x-svr                      svr
x-world/x-vrml                     vrml wrl
x-world/x-vrt                      vrt

А задается примерно так:
Код

<FORM name="formname" method="POST" enctype="multipart/form-data">
...
<INPUT size="50" name="ImportFile" type="file" accept="image/gif">
...
</FORM>

Автор: Andy_L20066 16.2.2009, 17:51
accept  - Мозилла вообще игнорирует... а ИЕ - создает дополнительные File types...
 smile 
не то что надо

Автор: Dobermann 16.2.2009, 17:54
Цитата(Andy_L20066 @  16.2.2009,  17:51 Найти цитируемый пост)
accept  - Мозилла вообще игнорирует... а ИЕ - создает дополнительные File types...

А ты сходу подо все браузеры заточить решил??? Откуда столько лени?!

Автор: Violator 16.2.2009, 17:59
Andy_L20066, 
маску не получится задать, через скрипт можно выводить сообщение пользователю
Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
  <title></title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <script language="JavaScript">
    function formsubmit() {
        arr=['jpeg','gif'];
        v=document.getElementById('file').value;
        t=v.split('.');
        ext=t.pop();
        ext=ext.toLowerCase();
        if (in_array(ext,arr)) {
            // отправлять данные формы
            return true;
        } else {
            // сообщать пользователю что файл с данным расширением не может быть закачан
            return false;
        }
    }
    function in_array(needle, haystack, strict) {
        var found = false, key, strict = !!strict;
        for (key in haystack) {
            if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
                found = true;
                break;
            }
        }
        return found;
    }
  </script>
</head>

<body>
  <form method="post" enctype="multipart/form-data" onsubmit="formsubmit();" action="/">
    <input id="file" type="file" name="file" />
    <input type="submit" />
  </form>
</body>
</html>

Автор: Andy_L20066 16.2.2009, 18:03
Цитата(Dobermann @ 16.2.2009,  17:54)
Цитата(Andy_L20066 @  16.2.2009,  17:51 Найти цитируемый пост)
accept  - Мозилла вообще игнорирует... а ИЕ - создает дополнительные File types...

А ты сходу подо все браузеры заточить решил??? Откуда столько лени?!

не под все браузеры... только FireFox и ИЕ...

Автор: Andy_L20066 16.2.2009, 22:22
cпасибо за ответы... прийдется применить либо клиентскую либо серверную валидацию...  не думал что нельзя как-то настроить этот контрол....

Автор: yantar 11.3.2009, 13:52
Посмотрите на такую библиотеку - там возможно это сделать. http://swfupload.org

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)