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 回答