Yahooショッピングスマホ用ページの容量チェック
Yashooショッピングのスマートフォン用商品説明で、
トリプルを使っていようともCSSが呼び出せないことは
以前の記事でご紹介しました。
こちらのsp-additionalの項目が、スマートフォン用商品説明になります。
http://developer.yahoo.co.jp/webapi/shopping/upload_format.html
CSSが使えないとなると、各要素のstyle属性に直書きすることになるのですが、
そうなると全角5,000文字以内(半角10,000文字以内)という制限に引っかかる可能性があります。
ただし、文字数だけならテキストファイルでカウントしてあげればよいのですが、
画像込みの総容量2000キロバイト以内(600キロバイトまでを推奨)
これをテキストエディタやCSVエディタで確認することは出来ません。
そこで今回は、C#で容量をチェックするコードをご紹介します。
//HTMLの記述されたテキストボックスからバイト数取得 var bytes = VBStringsUtility.GetByte(txtHTML.Text); //imgarrは画像名の入った配列 foreach (var img in imgarr) { //ファイルサイズ取得 //固定パス + ファイル名 var req = WebRequest.Create("参照パス" + img); try { using (var res = req.GetResponse()) using (var st = res.GetResponseStream()) using (var ms = new MemoryStream()) { byte[] buffer = new byte[1024]; while (true) { int readSize = st.Read(buffer, 0, buffer.Length); if (readSize == 0) break; ms.Write(buffer, 0, readSize); } bytes += (int)ms.Length; } } catch (Exception ex) { } } //2000キロバイト以上ならエラー if (bytes > 2000000) { // MessageBox.Show("2000バイトを超えています。", _ "エラー", _ MessageBoxButtons.OK, _ MessageBoxIcon.Error) }
まずは、HTMLの文字数をカウントします。
VBStringsUtility.GetByte()関数は、自社ユーティリティクラスで、
VBのバイト数取得関数をラッピングしたクラスになります。
それから、画像ファイルの一覧をピックアップして、各画像ファイルにアクセスを
行ってバイト数を計っています。
WebRequestクラスでのアクセスを行っています。
計測したバイト数を加算していきます。
当然ですが、画像数が多くなればなるほどバイト数は大きくなります。
これで、容量のチェックが出来るわけですが、難点を挙げるとすると
WebRequestを用いた画像ファイルへのアクセスに時間がかかることです。
最近ではスマートフォンからのアクセスが伸びているので無視するわけにも
いかないですし、判断が難しいところです。
早くスマートフォン用ページでもCSSが使えるようになってくれればなあと思うのと、
端末に縛られないレイアウトを考えていく必要があるなと考えさせられる
毎日です。
この記事へのコメントはこちら