2017-08-17 10 views
1

最初的問題:我希望我的未來網絡服務器的用戶可以使用頭像。 最初的解決方案(和他們的問題)限制使用<img>標籤加載的圖像的大小(按字節)

  • 讓用戶上傳自己的圖片,並將其保存

    • 這裏的親的是,從一開始,圖像的大小,我可能限制
    • 這個問題,相反,即使沒有人似乎太在意,是合法的:不知道它在其他國家是如何工作的,但在這裏你可能會被認爲對你在硬盤上存儲的東西負責,在某些情況下(我贏了列表,但你可能會猜到)。這意味着如果有人在你的服務器上傳一個非法圖像作爲他的頭像,然後向有關部門報告,你可能會遇到某種麻煩,根據審查的地方法官的判斷,這可能很容易導致服務器進入申請數月,「進一步調查」。
  • 在這裏,我們來了與第二個想法:讓用戶定義和鏈接保存爲圖像,他的頭像

    • 親:合法安全
    • 缺點:如果用戶定義了一個100MB圖像的鏈接,然後所有用戶可能會被迫下載以查看該頁面?

所以,問題是:有沒有辦法來「說」的瀏覽器,當它看到:

<img src='http://external.jpg' ...> 

external.jpg大小應該被限制,比方說, 100KB?如果它超過了這個尺寸,就放棄它的加載?

回答

1

使用此功能,您可以獲取文件大小並確定要從中執行的操作。你也可以使用像Clarifai這樣的API來檢查非法內容,如果你想將它存儲在你的硬盤上。

function get_filesize(url, callback) { 
 
    var xhr = new XMLHttpRequest(); 
 
    xhr.open("HEAD", url, true); // Notice "HEAD" instead of "GET", 
 
           // to get only the header 
 
    xhr.onreadystatechange = function() { 
 
     if (this.readyState == this.DONE) { 
 
      callback(parseInt(xhr.getResponseHeader("Content-Length"))); 
 
     } 
 
    }; 
 
    xhr.send(); 
 
} 
 

 
get_filesize("URLHERE", function(size) { 
 
    alert("The size of foo.exe is: " + size + " bytes."); 
 
});
來源: Ajax - Get size of file before downloading

+0

不管怎樣,作爲一個側面說明了誰就將發現自己在一個類似的問題:看來,無論是一些服務器不使用頁眉或不實施內容-長度。事實上,這種解決方案在某些情況下有效(例如,對我來說它適用於我測試過的所有wikimedia公用圖像),但它在許多其他第三方服務器案例中不起作用(並且此時它返回NaN大小)。 – DrHell