HTML input type=fileファイルフォーム要素の選択

6300 ワード

by zhangxinxu from http://www.zhangxinxu.com本住所:http://www.zhangxinxu.com/wordpress/?p=5071
一、良生-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-dataenctype属性値とするしかない.
旧時代の単図アップロードでも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要素には、ページ内に隠されているtarget要素の