2017-08-17 14 views
1

最初の問題:今後のWebサーバーのユーザーがアバターを使用できるようにします。 初期解(とその問題点)<img>タグをロードした画像のサイズ(バイト)を制限する

  • は、ユーザーが自分の画像をアップロードしてみましょう、それここにプロ

    • は、画像のサイズを最初から私が制限される場合がありますということです保存
    • 問題は、誰も気にしないように見える場合でも、合法です:それが他の国でどのように機能するかはわかりませんが、ここであなたがあなたのhddに保管しているものについて責任を負うこともあります。あなたが推測するかもしれない)。つまり、あなたのサーバー上にアバターとして不正な画像をアップロードし、それが当局に報告された場合、審理中の治安当局に応じて、サーバが下に移動する可能性があります「さらなる調査」のための数か月の徴収。
  • そしてここでは、我々は、第二のアイデアを来た:合法的に安全な

  • 短所:ユーザーが

    • プロを定義し、彼のアバターのために、画像へのリンクを保存してみましょうどのようなユーザーであれば100MBのイメージへのリンクを定義しています。その場合、すべてのユーザーがページを表示するためにダウンロードする必要がありますか?

そこで質問です:それは見ているブラウザに「言う」する方法があります:

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

external.jpgサイズは、たとえば、に限定されるようになっています100KB?そして、そのサイズを超える場合、それのローディングを落とすために?

答えて

1

この機能を使用すると、ファイルサイズを取得して、そこから何をするかを決定できます。また、ClarifaiのようなAPIを使用して、HDDに保存したい場合は、不正なコンテンツをチェックすることができます。

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

、:いくつかのサーバがヘッダーを使用していないか、彼らはコンテンツを実装していないのいずれかのようです長さ。確かにこの解決策はいくつかのケースで機能します(例えば、私がテストしたすべてのウィキメディアコモンズ画像で働いてくれました)が、他の多くの第三者サーバーのケースでは機能しません(その時点で、サイズとしてのNaN)。 – DrHell

関連する問題