5

ここで少し奇妙な問題が発生しました。(それか、私は愚かな単純なものを見落としているだけです。)

ファイルアップロードフォームがありますが、MSWordドキュメントを含む特定の種類のファイルのみを受け入れたいと考えています。ファイル入力フィールドのaccept属性に.docおよび.docxMIMEタイプ(application/mswordおよびapplication/vnd.openxmlformats-officedocument.wordprocessingml.documentそれぞれ)を追加しましたが、[ファイルの選択]をクリックすると、.docおよび.docxファイルは許可されていないためグレー表示されたままになります。アップロードしました。

だから、私は何が欠けていますか?ヘルプやポインタをいただければ幸いです。

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

4

2 に答える 2

7

属性のサポートはaccept不十分でしたが、徐々に一般的になりつつあります。私のGoogleChrome19では、要素<input type="file" accept="application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/msword" />が機能するため、選択は.docファイルと.docxファイルに制限されます。他のブラウザは一般的にそのような属性を無視しacceptますが、例えばFirefoxはのようないくつかの単純なケースをサポートしますaccept="image/gif"

これに加えて、ブラウザはさまざまな方法でMIMEタイプをファイル名拡張子(通常、ファイルシステムが「ファイルタイプ」インジケータとして扱うもの)にマップする場合があります。したがって、属性は状況によっては機能する場合がありますが、マッピングが異なると状況が悪化する可能性があります。

于 2012-05-08T03:58:52.773 に答える
0

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

JavaScriptソリューションを作成して、ファイルの拡張子を確認できます。

于 2012-05-07T20:01:55.880 に答える