2012-05-04 88 views
0

so ..我有一个XMLHttpRequest图像上传器和我不知道如何限制图像上传器只上传图像没有其他和我已经对文件大小进行了限制,所以它的3mb所以它不是太大javascript if image


问题你如何限制图片上传到只上传图片没有别的

图片上传代码

// 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); 
    } 

我只是想检查他们的文件扩展名是为了清楚。
感谢您的帮助

+0

如何决定给定文件是否为图像?这完全不可能以100%的准确性完成,并且它形成了整个你的问题(因为解决方案只是调用if(isImage(file)){...}',一旦你定义了这个函数。想想你的*实际*约束是什么,以及为什么你想这样做,可能会帮助指导实现。 –

+0

对不起,问题有点不清楚我想检查文件扩展名,所以pngs,jpgs等 – ryanc1256

+0

@ user1285198-你使用的是哪一个上传器? – coder

回答

0

不要依靠javascript过滤上传的文件。我建议只检查文件扩展名 - 99.9%的时间用于诚实用户,恶意用户可以找到解决任何Ja​​vaScript的方法。

安全来自服务器端验证。在服务器上,您可以使用函数或库来检查文件是否为图像。例如,您可以运行一个函数来检查图像的尺寸,如果该文件不是图像,将会引发错误。

+0

你想我只想检查文件扩展名pngs,jpgs等 – ryanc1256