web-dev-qa-db-ja.com

JSとtype.matchをファイルmimeタイプとして-アドバイスが必要

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

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

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

ここ は基本コードです

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

9
user592704

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

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

このコードでは、type属性を使用して、正規表現を実行します(詳細については、 match および RegExp を参照してください)。彼らの正規表現は、タイプに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')を使用します。しかし、ユーザーは簡単にそれで遊ぶことができるので(それらを削除または変更する)、それはお勧めできません。

17
Py.

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

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

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

1
Shalmali