2

ユーザーがサポート ドキュメントをアップロードできるようにするアプリケーションがあります。cffile タグを使用してファイルを保存しています。

タグは次のようになります。

<cffile action="upload" 
        destination="path..."
        nameconflict="makeunique"
        ACCEPT="application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/pdf, application/vnd.openxmlformats-officedocument.presentationml.presentation, application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
        filefield="outline">

.xls ファイルがアップロードされ、アップロードされたファイル「application/octet-stream」が受け入れられなかったことを示すエラーが生成されました。

問題は、.xls スプレッドシート ファイルがサーバーによって "application/octet-stream" MIME タイプを持つと解釈されたのはなぜですか?

4

3 に答える 3

2

クライアントのブラウザが、.xlsファイルの正しいmimeタイプを選択するように構成されていなかったと思われます。ほとんどの場合、mimeタイプのapplication / octet-streamは、リクエストのHTTPヘッダーで送信されました。

于 2012-07-05T23:55:58.300 に答える
0

acceptクライアント ブラウザが正しい MIME タイプを送信した場合でも、CF (9 以下) はファイル拡張子のみをチェックするため 、属性については忘れてください。

ファイルをアップロードして、ファイル拡張子をホワイト リストと照合するだけです。

がなければaccept、その例外も発生しません。

于 2012-07-06T01:12:55.077 に答える
-1

以下の答えは正しいとは思いませんが、議論を完了するためにここに残しておきます。以下の私のコメントを参照してください。-mk

ええと...SunFlowerに同意するのは嫌いですが、ここでの問題は、クライアントではなくサーバーでの拡張機能のマッピングです。ファイルがサーバーに到着し、ColdFusionは拡張子に基づいてmimeタイプを「検索」します。サーバーにExcelをインストールしたことがない場合は、関連付けられたmimeタイプがサーバーにない可能性があります。ここでは、クライアントに依存するものは何も役に立たないことを忘れないでください。ファイルが到着し、拡張子があり、拡張子はサーバーが認識しているものと一致する必要があります。

これがWindowsの場合、IISにmimeタイプを追加でき(手順については「mimetypes-IIS6またはIIS7」を検索してください)、関連付けられたmimeタイプが基になるレジストリハイブに自動的に追加されると思います。それ以外の場合はレジストリハック。ここでメモリから移動しますが、疲れすぎて検索できません:)


申し訳ありませんが、application/octet-streamに関する質問を見逃しました。これは、任意のファイルのデフォルトのmimeタイプです。キャッチオールのようなものです。

于 2012-07-06T02:57:39.050 に答える