2017-08-28 10 views
0

フォームから送信されたPOSTデータのサイズをJavaScriptで判別できますか? post_max_sizeに関するPHPエラーを避けるために提出する前にフォームサイズを検証することです。JavaScriptを使用したフォームのサイズ(バイト単位)?

+1

達成しようとしていることの[mcve]がありますか? –

+4

あなたはクライアント側のチェックとクライアントがあなたに送るものだけに依存するべきではありません。あなたは常にサーバー側でチェックする必要があります。 – j08691

+1

@ j08691 post_max_sizeを超える投稿のサイズを確認することは可能ですか?私は、アップロードサイズがサーバー側を超えているように見えるサーバーの制限を超えるかどうかをユーザーに知らせたいと思っています。 https://stackoverflow.com/questions/2133652/how-to-gracefully-handle-files-that-exceed-phps-post-max-size – FuzzyTree

答えて

1

@ j08691で述べたように、変更を避けるためにサーバー側をチェックする方が良いです。

ただし、client => serverを送信して合計する各データのオブジェクト/変数のタイプを取得することで、すべてのバイトを計算できます。

長いことですが、それは良い習慣ではありませんが、あなたはそれを行うことができます。

const typeSizes = { 
    'undefined':() => 0, 
    'boolean':() => 4, 
    'number':() => 8, 
    'string': (item) => 2 * item.length, 
    'object': (item) => Object.keys(item).reduce(
     (sum, key) => sum + sizeOf(key) + sizeOf(item[key]), 0 
    ) }; 

const sizeOf = (value) => value === null ? 0 : typeSizes[typeof value](value); 

このコードは、さまざまな種類のデータのサイズを示すsizeOfという名前の関数を提供します。

「post_max_size」の値と合計を比較し、リクエスト前にエラーをスローすることができます。

Bye :)

+0

を参照してください。もちろん、サーバー側の検証は必須ですが、クライアント側の検証追加の検証レベルを追加し、ユーザビリティを向上させます – fcaserio

関連する問題