2016-10-17 20 views
1

同じアプリケーションが2つの異なるサーバー(dev/prod)で動作しています。サーバーは、私が知る限りではほとんどすべて(CF、Java、IISなど)の同じバージョンを実行しています。同じサーバー、同じファイル、異なるMIMEタイプ

開発中に特定のWord文書をアップロードしましたが、ColdFusionではそれをapplication/mswordと認識し、application/x-tika-msofficeと認識しました。

私はなぜそれを診断しようとしています。私の修正は、私のアップロードでapplication/x-tika-msofficeのMIMEタイプを許可することですが、何が違うのでしょうか。いくつかの特定のサーバー設定がある場合は、私に知らせてください。しかし、私が考えることができるすべては、prodとdevの間で同じようです。

+1

IIS内の.docのMIMEタイプがdevとprodで一致しますか? –

+0

はい、両方ともapplication/mswordと言います – Leeish

+0

Adob​​eのバグベースには少なくとも2014年に似たエントリがいくつかあります。 .docx?OpenOfficeに触れたことはありますか? – TRose

答えて

2

のMIMEタイプはですので、あなたが見ている違いが分かると思います。おそらく、開発にはOfficeがインストールされており、運用サーバーにはうまくいけません。

この理由でファイルをアップロードする必要があるかどうかは、MIMEタイプを使用しないでください。代わりに、は常にファイル拡張子を使用してください。このMIMEタイプは、容易にとなる可能性があります。であり、検証のために頼るのは無意味です。

CF10 +では、cffileタグのaccept属性にファイル拡張子リストを指定できます。また、strict属性を追加し、デフォルトでtrueに設定します。これはサーバ側のMIMEタイプ検査(実質的にはfileGetMimeType()と同じですが、strict=trueであってもこのファイル検査に依拠することはできません)。

+0

私はあなたの最初の部分を理解していません。同じマシンを使用してファイル(同じブラウザ)をアップロードしていて、ColdFusionがMIMEタイプのサーバー側に一時ファイルを読み込ませないようにします。したがって、MIMEタイプがブラウザで転送中に編集され、メタデータとしてサーバ上の一時ファイルに追加されない限り、どのように可能かはわかりません。あなたはファイルが本質的にMIMEタイプを持っていると言っていますが、ブラウザはファイルを受け取り、サーバに送信するときに上書きしますか?それは狂ったように聞こえる。 ファイルの拡張子は、MIMEタイプよりもどのようになりすますことができますか。私はこのチェックに 'accept'属性を使用しています。 – Leeish

+0

FileUploadドキュメントを読むと、あなたの声明が正しいように見えるので、私はもっと混乱してしまいます。同じコンピュータ、同じファイル、ブラウザが2種類のMIMEタイプを送信していますか? – Leeish

+0

docファイルがすでにサーバ上にあると仮定すると、 'fileGetMimeType(path、false)'と 'fileGetMimeType(path、true)'からどのような結果が得られますか? – Leigh

関連する問題