前提・実現したいこと
画像アップロード時に5MB未満であるかどうかのサイズチェック
発生している問題・エラーメッセージ
iOSでのみ5MB以上の画像がチェックに引っかからない
該当のソースコード
JavaScript
1var file = $("#aaa").prop("files")[0]; 2console.log(file["size"]); 3if (file["size"] >= 5000000){ 4 alert("注意文言"); 5 return false; 6 }
試したこと
if文の前にconsole.logでファイルサイズを表示してみたが、iOSではこの時点でファイルサイズが自動的に小さくされていた。
jpeg 30MB ⇨ 995079B
jpeg 17MB ⇨ 15933B
規則性は見えませんでしたが、[input type="file"]時にiOS特有の圧縮処理のようなものがあるのでしょうか?
HTMLプロトコルなど通信ログをご確認してみてはいかがでしょうか。
ちなみに、キャリアによっては画像圧縮をしているようです。
https://ja.wikipedia.org/wiki/%E9%80%9A%E4%BF%A1%E3%81%AE%E6%9C%80%E9%81%A9%E5%8C%96
JavaScriptということはアップロードする前に端末側でチェックされているということでしょうか。
iOSということでiPhone前提で確認しますが、正味のファイルサイズはどのツールで確認されていますでしょうか?
t_obaraさん
クライアント側でのチェックなのですが、通信は関係あるのでしょうか?
tabuuさん
>>>JavaScriptということはアップロードする前に端末側でチェックされているということでしょうか。
そうです。ファイルサイズはmacのFinderで確認したのみです。iPhone上ではサイズみていません
macからiPhoneにコピーする過程で圧縮されていないかご確認いただければと思います。
tabuuさん
確認する方法としては何がいいと思いますか?
iPhoneからMacにもう一度ファイルを戻してみるとかですかね。
tabuuさん
それは実施してみましたが、やはりiphoneでのサイズだけ小さくなります。
ファイル情報を表示するサンプルコードを書いてみましたがiphoneとmacで画像サイズが変わっています。(iphoneからairdropでmacに共有したもの)
iphoneでは2072005バイト、macでは15090532バイトとなりました。10mb以上の画像5個ほど実施して1つだけiphoneとmacの画像サイズが同じになるものがありましたが原因はわからず、、、
iOS起因のものなんでしょうかね、、、