9

今日、私はFF File APIとして興味深いことに直面し、ファイルをタイプごとに分けました。OKここに小さなスニペットがあります

if (!input.files[0].type.match('image.*')) {
            window.alert("Select image please");
            return;
        }

読み取り専用の画像を制御します。しかし、たとえばdocファイルやpdfはどうでしょうか。このことの有用な例が見つからなかったので、いくつかのスニペットを共有していただければ幸いです。さまざまなファイルタイプを検出することに興味がありますが、JSとそのtype.matchをバインドしてさまざまなファイルタイプを制御するにはどうすればよいですか?

これが基本コードです

有用なコメントをいただければ幸いです:)

4

2 に答える 2

17

したがって、基本的な考え方は、このコードがファイルオブジェクトを使用することです。それらの詳細については、以下を参照してください。

w3で指定されているようtypeに、Fileオブジェクトの属性はMIMEタイプです。これはRFC2046で定義されています。しかし、仕様自体は最も興味深い部分ではありません。さらに興味深いのは、ここにある既存のMIMEタイプ、またはここで最も使用されているMIMEタイプのリストです

このコードでは、type属性を使用して正規表現を実行します(詳細については、matchRegExpを参照してください)。彼らの正規表現は、タイプにが含まれていれば問題ないと言っていますimage

独自のセレクターを作成するには、上記を組み合わせる必要があります。(一部の例では、mimeタイプがタイプ全体であるため、matchの代わりに===を使用します)たとえば、次のチェックが可能です。

  • ドキュメント(pdfだけでなく、odtにもこのタイプがあります):input.files[0].type==='application/pdf'
  • オーディオ:input.files[0].type.match('audio.*')
  • ビデオ :input.files[0].type.match('video.*')

等々。

その後、name特定の拡張子のみを照合する場合は、ファイルの属性でセレクターを使用できます(たとえば、異なる種類のドキュメント間をチェックする場合は、.pdf、.odt ...であるかどうかを確認できます)。例input.files[0].name.match('\.pdf')。しかし、ユーザーはそれで簡単に遊ぶことができるので、それはお勧めできません(それらを削除または変更する)。

于 2011-09-14T07:13:12.240 に答える
3

これは役立つかもしれません:

file.mimetype.match('text.*|image.*|application.*')

これにより、受け入れ可能なすべてのmimeタイプがチェックされます

于 2018-02-20T04:44:13.927 に答える