0

だから..私はXMLHttpRequest画像アップローダーを持っていますが、画像アップローダーを制限して画像のみをアップロードする方法がわかりません。ファイルサイズに制限を設けたので、3MBなので大きすぎません


質問画像アップローダーを画像のみをアップロードするように制限するにはどうすればよいですか

画像アップローダーのコード

    // following line is not necessary: prevents running on SitePoint servers
    if (location.host.indexOf("sitepointstatic") >= 0) return

    var xhr = new XMLHttpRequest();
    if (xhr.upload && file.type == ("image/jpg"||"image/png") && file.size <= $id("MAX_FILE_SIZE").value) {

        // create progress bar
        var o = $id("progress");
        var progress = o.appendChild(document.createElement("p"));
        progress.appendChild(document.createTextNode("upload " + file.name));


        // progress bar
        xhr.upload.addEventListener("progress", function(e) {
            var pc = parseInt(100 - (e.loaded / e.total * 100));
            progress.style.backgroundPosition = pc + "% 0";
        }, false);

        // file received/failed
        xhr.onreadystatechange = function(e) {
            if (xhr.readyState == 4) {
                progress.className = (xhr.status == 200 ? "success" : "failure");
            }
        };

        // start upload
        xhr.open("POST", "upload.php", true);           
        xhr.setRequestHeader("X_FILENAME", file.name);
        xhr.send(file);
    }
    else
    {
    alert("file in unsported at this time " + file.type);
    }

明確にするために、ファイル拡張子を確認したいだけです。
ご協力いただきありがとうございます

4

1 に答える 1

0

アップロードされたファイルをフィルタリングするために JavaScript に依存しないでください。ファイル拡張子のみを確認することをお勧めします。正直なユーザーには 99.9% の確率で機能し、悪意のあるユーザーは JavaScript を回避する方法を見つけます。

セキュリティはサーバー側の検証によるものです。サーバーでは、関数またはライブラリを使用してファイルを画像として解析することで確認できます。たとえば、関数を実行して画像のサイズを確認できますが、ファイルが画像でない場合はエラーがスローされます。

于 2012-05-04T10:40:58.320 に答える