2012-05-07 19 views
3

私はここで少し奇妙な問題があります。 (どちらかというと、何かばかげた単純なものを見落としているだけです)HTMLファイル形式、Word文書を受け入れる

私はファイルアップロードフォームを持っていますが、どのMS Wordドキュメントの中で特定の種類のファイルのみを受け入れる必要があります。ファイル入力フィールドのaccept属性に.docと.docxのMIMEタイプ(それぞれapplication/mswordapplication/vnd.openxmlformats-officedocument.wordprocessingml.document)を追加しましたが、「ファイルを選択」をクリックすると、.docファイルと.docxファイルは許可されないままグレー表示されますアップロードする。

私は何が欠けていますか?どのような助けや指針をいただければ幸いです!

(はい、私はフォームチェックがアップロードされたファイルをフィルタリングする良い方法ではないことを知っています。私はこれをカバーするPHPを持っています。これはユーザの便宜のためです。許可されていないファイルをアップロードしてください)。

答えて

0

私はWordファイルのMIMEタイプです。ブラウザに登録されていない可能性があります。そのため、Wordファイルはapplication/octet-streamとして報告されています。一般的に、HTML形式のMIMEタイプフィルタリングは、一般的なイメージMIMEタイプを除き、確実​​に動作しません。

ファイルの拡張子を確認するJavaScriptソリューションを作成することができます。

+0

SafariとIEではサポートされていないことが分かっていましたが、ブラウザによってMIMEタイプの認識が異なることも知っておいてよかったです。私はこれを追い出すでしょう。 JavaScriptのソリューションが良いアイデアかもしれません。 ありがとう! – Fang

4

accept属性のサポートは貧弱ですが、徐々に一般的になりつつあります。私のGoogle Chrome 19では、要素<input type="file" accept="application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/msword" />が働くので、選択は.docと.docxファイルに制限されています。他のブラウザは、一般に、このようなaccept属性を無視する。 Firefoxはaccept="image/gif"のような単純なケースをサポートしています。

これに加えて、ブラウザはMIMEタイプをファイル拡張子(一般にファイルシステムが "ファイルタイプ"インジケータとして扱うもの)にさまざまな方法で対応付けることができます。したがって、属性によっては状況によっては動作する可能性がありますが、マッピングが異なると属性が悪化する可能性があります。

関連する問題