12

私は小さなファイル アップロード スクリプト (学習経験) を使用していますが、Microsoft Office 関連のファイル (.docまたは.docxたとえば) を選択するときに、ファイル オブジェクトにタイプが指定されていないことに気付きました。

ファイルリスト

.doc ファイルの場合、タイプは であると予想していましたが"application/msword"、同様に .docx は であると予想していました"application/vnd.openxmlformats-officedocument.wordprocessingml.document"

タイプを特定できない場合、ファイル拡張子を調べて、それを「予想される」コンテンツ / MIME タイプと照合するのが正しいアクション コースですか?

サンプル スクリプト:

<div id="fileUpload">
    <input type="file" id="fileElem" style="display:none;" onchange="handleFiles(this.files)"/>
    <a href="#" id="fileSelect">Select some files</a>
</div>

<script type="text/javascript">
    var fileSelect = document.getElementById("fileSelect"),
        fileElem = document.getElementById("fileElem");

    fileSelect.addEventListener("click", function (e) {

        if (fileElem) {
            fileElem.click();
        }

        e.preventDefault();
    }, false);

    function handleFiles(files) {
        console.log(files);
    }

</script>
4

2 に答える 2

15

W3ファイルApiドラフトによると、タイプ属性は次のとおりです。

Blobのメディアタイプを表す小文字のASCIIエンコード文字列で、RFC2046MIMEタイプ[RFC2046]として表されます。取得時に、準拠するユーザーエージェントは、BlobのMIMEタイプがわかっている場合は、それを返す必要があります。準拠するユーザーエージェントがBlobのメディアタイプを判別できない場合、空の文字列を返さなければなりません(MUST)。文字列は、RFC2616のセクション3.7「メディアタイプ」で定義されているメディアタイプトークンと一致する場合、有効なMIMEタイプです。

したがって、基本的に、HTTP / 1.1の有効なメディアタイプでない場合は、空になります。いずれかの方法。

ええ、あなたは次のようなことをする必要があります:

if(type === "") {
  //Get extension and match to a MIME-types list. (http://www.htmlquick.com/es/reference/mime-types.html)
}
于 2012-06-25T03:10:46.403 に答える
11

受け入れられた回答に同意しますが、特定のファイルタイプでこれが一部で発生し、他のファイルで発生していない理由について行き詰まった(私のような)誰かへの参考として、WindowsでMIMEが適切に設定されていない場合に注意してくださいユーザー レジストリでは、空の文字列が取得されます。楽しい数時間でした:)

于 2014-12-11T06:01:58.547 に答える