HTML input type=fileファイルフォーム要素の選択
6300 ワード
by zhangxinxu from http://www.zhangxinxu.com本住所:http://www.zhangxinxu.com/wordpress/?p=5071
一、良生-input type=fileとファイルアップロード
本明細書でいう
しかし、慣れるために、私たちは多く書きます.
HTML 5が登場する前に(XHTML)、私たちの閉じたルールにはいくつかの違いがあります.
名前の通り、ファイルを選択してアップロードします.
万悪の旧時代、HTML 5が登場する前に、原生の
しかし、技術の発展は、日進月歩で、30年河東、30年河西である.オリジナルHTML 5フォームの多図(
しかし、PCプロジェクトについては、IE 8-IE 9ブラウザは無視できません.したがって、現在流行している処理方法の一つは、HTML 5 fileアップロードとflash swfuploadアップロードを統合するモードであり、オリジナルHTML 5アップロードを優先的に使用し、サポートされていない、flashアップロードを使用することである.以前、HTML 5のアップロードに関する記事がありましたが、毎日アクセスが高いのは「HTML 5ベースのプレビュー可能なマルチピクチャAjaxアップロード」ですので、興味があればご覧ください.
二、蓮安-原生inputアップロードとフォームform要素
ブラウザのオリジナルプロパティを使用してファイルのアップロード(画像など)効果を実現したい場合は、親の
旧時代の単図アップロードでもHTML 5の多図アップロードでもそうです.
三、沿見-原生file input画像アップロード前のプレビューとAjaxアップロード
ファイル、特に画像は、登場前にプレビューでき、素晴らしいインタラクティブな体験です.サーバーを動かさず、トラフィックを消費しないで、素晴らしいですね.
理想はいいが、実現すると......
HTML 5がまだ登場していない古い時代には、低バージョンのIEブラウザだけが方法があったようで、プライベートのフィルタを使って、安全の制限を超えて(実は悪いものを利用して)、画像の直接プレビューを実現しました.しかし、その時、Chrome、FireFoxはこれを出していなかったので、オリジナルfile inputを使って画像のアップロード前のプレビューを実現しようとすると、互換性のハードルが越えにくい.
しかし、その後、HTML 5が来て、私たちは転機が現れて、IE 10+とその他の現代のブラウザ、私たちに直接画像のデータを読み取ることができて、それからページの上で現れて、アップロードの前のプレビューを実現しました;以前の古いIEのフィルタポリシーを加えると、実行可能なようです.しかし、古いIEブラウザでは一度に1つのファイルしか選択できないので、単図だけアップロードする場合は、考えてみてください.
従来のformコミットは、ページフローを変更する、すなわちリフレッシュ後にジャンプします.良い体験はAjaxインタラクションを歩くべきです.HTML 5ではバイナリフォームデータのコミットがサポートされているので、Ajaxがアップロードしたファイルデータを余裕を持ってコミットすることができます.古いIEブラウザはどうしますか?
一般的な方法は次のとおりです. form要素には、ページ内に隠されている
一、良生-input type=fileとファイルアップロード
本明細書でいう
input type=file
は、type
のタイプがfile
であるinput
要素を指し、最も簡単なHTMLコードは以下の通りである.
しかし、慣れるために、私たちは多く書きます.
HTML 5が登場する前に(XHTML)、私たちの閉じたルールにはいくつかの違いがあります.
名前の通り、ファイルを選択してアップロードします.
万悪の旧時代、HTML 5が登場する前に、原生の
file
input
フォーム要素は一度に1枚の画像をアップロードするしかありませんでした.一度にマルチマップをアップロードするインタラクションのニーズを満たすことができないため、多くのシーンがswfuploadされる.jsが取って代わって、少しずつ人々の視野から薄れていく感じがします.しかし、技術の発展は、日進月歩で、30年河東、30年河西である.オリジナルHTML 5フォームの多図(
multiple
属性)、アップロード前のプレビュー、バイナリアップロードなどのサポートが広がるにつれて、オリジナルのfile
input
フォーム要素はまた新しいアップグレードを迎え、flashを背景としたswfupload.jsは寂しさに決まっている.しかし、PCプロジェクトについては、IE 8-IE 9ブラウザは無視できません.したがって、現在流行している処理方法の一つは、HTML 5 fileアップロードとflash swfuploadアップロードを統合するモードであり、オリジナルHTML 5アップロードを優先的に使用し、サポートされていない、flashアップロードを使用することである.以前、HTML 5のアップロードに関する記事がありましたが、毎日アクセスが高いのは「HTML 5ベースのプレビュー可能なマルチピクチャAjaxアップロード」ですので、興味があればご覧ください.
二、蓮安-原生inputアップロードとフォームform要素
ブラウザのオリジナルプロパティを使用してファイルのアップロード(画像など)効果を実現したい場合は、親の
form
要素に捨てられないものがあります.enctype="multipart/form-data"
enctype
属性は、サーバに送信する前にフォームデータをどのように符号化すべきかを規定しており、デフォルトの符号化は「application/x-www-form-urlencoded
」である.通常のデータには適用可能であるが、ファイル、科科科については、むやみに符号化することはできない.これは何であり、multipart/form-data
をenctype
属性値とするしかない.旧時代の単図アップロードでもHTML 5の多図アップロードでもそうです.
三、沿見-原生file input画像アップロード前のプレビューとAjaxアップロード
ファイル、特に画像は、登場前にプレビューでき、素晴らしいインタラクティブな体験です.サーバーを動かさず、トラフィックを消費しないで、素晴らしいですね.
理想はいいが、実現すると......
HTML 5がまだ登場していない古い時代には、低バージョンのIEブラウザだけが方法があったようで、プライベートのフィルタを使って、安全の制限を超えて(実は悪いものを利用して)、画像の直接プレビューを実現しました.しかし、その時、Chrome、FireFoxはこれを出していなかったので、オリジナルfile inputを使って画像のアップロード前のプレビューを実現しようとすると、互換性のハードルが越えにくい.
しかし、その後、HTML 5が来て、私たちは転機が現れて、IE 10+とその他の現代のブラウザ、私たちに直接画像のデータを読み取ることができて、それからページの上で現れて、アップロードの前のプレビューを実現しました;以前の古いIEのフィルタポリシーを加えると、実行可能なようです.しかし、古いIEブラウザでは一度に1つのファイルしか選択できないので、単図だけアップロードする場合は、考えてみてください.
従来のformコミットは、ページフローを変更する、すなわちリフレッシュ後にジャンプします.良い体験はAjaxインタラクションを歩くべきです.HTML 5ではバイナリフォームデータのコミットがサポートされているので、Ajaxがアップロードしたファイルデータを余裕を持ってコミットすることができます.古いIEブラウザはどうしますか?
一般的な方法は次のとおりです.
target
要素の
を すid
が されました.
onload
, ( ), , 。
var doc = iframe.contentDocument ? iframe.contentDocument : frames[iframe.id].document;
var response = doc.body && doc.body.innerHTML;
OK、もちろん、 のように をかけずにjqueryを うこともできます.form.js. は、 のようになっていますが、そんなに な はありません.
、 - file inputサイズ、ボタン などのUIカスタマイズ
のfile inputが られないもう つの は、 い さがまだコントロールできないことだ.
たとえば、 の のような「ファイルを 」という では、fileコントロールのナイフをカスタマイズすることはできません.
どうしようかな?
fileタイプの を 0
で、 たちのきれいなボタンに う があります.そして たちはきれいなボタンをクリックして、 にクリックするのはfile
です.
しかし、この にはいくつかの があります.サイズ が ではありません.CSS width
のプロパティにはブラウザがありません.size
を する があります.その 、 な も ではありません.きれいなカスタムボタンにカバーするのは しいです. スタイルは しにくく、ボタンのhover
およびactive
は しにくい. HTML の と めコスト.
より い は、label
を してfile
コントロールに けることです.カスタマイズされたきれいなボタンをクリックすると、fileコントロールをクリックします. が な はない. hover active に できない はない. たちのきれいなボタンはformフォーム の にもあります. えば、 のようにします.
は の り(リアルリアルタイム ):ファイル をアップロード
、 -fileタイプコントロールのaccept
input fileタイプコントロールにはaccept
という がありますが、あまり らない もいるかもしれません.ブラウザが け れるファイルのタイプ、つまりシステムの ファイルのポップアップを くときに、デフォルトのインタフェースに されるファイルのタイプを することができます.たとえば、accept="image/jpeg"
の 、インタフェースにはjpgピクチャのみがあり、 のようにスクリーンショットされます.また、フォームの には「カスタムファイル」ボタンがあります.
に された 、jpgピクチャのみの が されることは なく、いずれもピクチャタイプのみの が であるはずですが、この 、 のように できます.accept="image/*"
すると、「カスタムファイル」ボタンは、より の な「ピクチャファイル」になります:accept
の は、 にはMIMEタイプであり、 えば、 のような なものがあります.accept="application/pdf"
accept="audio/x-mpeg"
accept="text/html"
.accept="video/x-mpeg2"
に、 の をカンマで ります.たとえば、 のようになります.
、また-input file のクリア
のブラウザは value = ""
で、 のIEブラウザはだめのようで、file.outerHTML = file.outerHTML
を っているようで、 はテストしていません.
しかし、 だと います.ブラウザなどを しなければなりません. のAjax アップロードのように、form.reset()
に アップロードすればよい.
はオリジナルの で、いつも を していくつかの いを することができて、そのため して の を して、 を って で、 い いの の を けて、 にもっと い の があります. :http://www.zhangxinxu.com/wordpress/?p=5071