8

このようなファイルをアップロードするオプションをユーザーに提供します

<form action="#" onsubmit="return Checkfiles(this);">
    <center><input type="file" id="filename"> 
    <input type="submit" value="Go!"></center>
    </form>

ユーザーがファイルをアップロードすると、次の JavaScript 関数を使用してファイルを検証します

<script type="text/javascript">
        function Checkfiles()
        {
        var fup = document.getElementById('filename');
        var fileName = fup.value;
        var ext = fileName.substring(fileName.lastIndexOf('.') + 1);
        if(ext == "pdf" )
        {
        return true;
        } 
        else
        {
        alert("Upload pdf files only");
        fup.focus();
        return false;
        }
        }
    </script>

すべてがうまくいっています。
しかし、拡張子だけでなく、他の方法でファイルを検証したいので、
これを行う理由を示します。画像ファイルの名前を image.pdf に変更したところ、現在は pdf 形式になっていますが、開くことができませんでした。

だから私はpdfファイルを正確に検証したい。その拡張子以外に確認する方法はありますか?
編集
jspページを使用してサーバー側で検証を行いたいです。それで、私はそのために何をすべきですか?
前もって感謝します :)

4

3 に答える 3

10

JavaScript でファイルタイプを検証するには、いくつかの方法があります。

// Your way: getting the extension and checking it.
// I suggest this way instead of using indexOf:
var ext = fileName.split('.').reverse()[0]
// Splits by '.', reverse the array, and returns the first element

// Another way: checking the type of the file
if ( fup.files[0].type === 'application/pdf' ) {
    console.log( 'It is validated!' )
}

実際の例: https://stackoverflow.com/a/4581316/851498のおかげでhttp://jsbin.com/akati3/2

ただし、他の人が言ったように、サーバー側でこれを実際に検証する必要があります。

于 2012-04-25T07:03:57.767 に答える
2

あらゆる種類の JavaScript 検証は、ユーザーの快適さだけを目的としています。サーバー側でもすべてを検証する必要があります。ユーザーは、JavaScript コードを簡単に無効化または変更できます。

ともかく。javascript でファイルの内容を確認することはできません。

PHP では、http://www.php.net/manual/en/function.finfo-file.phpを使用して、内容からファイル タイプを検出できます。他の言語のほとんどは、同様の機能を持つはずです。

于 2012-04-25T05:38:03.503 に答える
0

私の知る限り、pdfが実際にpdfであるかどうかの確認は、サーバー側でのみ行うことができます。IText などで開いてみてください。PDF 以外のものを開いたり変更したりしようとすると、ある種の例外がスローされるに違いありません。

于 2012-04-25T05:53:56.783 に答える