[解決済み] アップロード前にJavascriptで画像の幅と高さをチェックする。
2022-04-22 17:02:39
質問
私は、ユーザーが画像を置くことができるフォームを持つJPSを持っています。
<div class="photo">
<div>Photo (max 240x240 and 100 kb):</div>
<input type="file" name="photo" id="photoInput" onchange="checkPhoto(this)"/>
</div>
このjsを書きました。
function checkPhoto(target) {
if(target.files[0].type.indexOf("image") == -1) {
document.getElementById("photoLabel").innerHTML = "File not supported";
return false;
}
if(target.files[0].size > 102400) {
document.getElementById("photoLabel").innerHTML = "Image too big (max 100kb)";
return false;
}
document.getElementById("photoLabel").innerHTML = "";
return true;
}
これは、ファイルの種類とサイズをチェックするのに問題なく機能します。現在、画像の幅と高さをチェックしたいのですが、できません。
で試してみました。
target.files[0].width
しかし、私は
undefined
. 他の方法で私は得る
0
.
何か提案はありますか?
どのように解決するのですか?
ファイルはただのファイルなので、このように画像を作成する必要があります。
var _URL = window.URL || window.webkitURL;
$("#file").change(function (e) {
var file, img;
if ((file = this.files[0])) {
img = new Image();
var objectUrl = _URL.createObjectURL(file);
img.onload = function () {
alert(this.width + " " + this.height);
_URL.revokeObjectURL(objectUrl);
};
img.src = objectUrl;
}
});
デモの様子 http://jsfiddle.net/4N6D9/1/
これは一部のブラウザでしかサポートされていないことを理解しているのですね。主にfirefoxとchromeで、今となってはoperaもあり得るかもしれません。
P.S.
は
URL.createObjectURL()
メソッドが削除されました。
MediaStream
インターフェース
. この方法は2013年に非推奨となり、ストリームを
HTMLMediaElement.srcObject
. を呼び出す必要があり、安全性が低いため、旧方式は削除されました。
URL.revokeOjbectURL()
でストリームを終了させます。他のユーザーエージェントでは、この機能フィーチャーを非推奨(Firefox)または削除(Safari)しています。
詳しくは、以下をご参照ください。 こちら .
関連
-
Vue+ElementUIによる大規模なフォームの処理例
-
Vueの一般的な組み込みディレクティブの説明
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] JavaScriptで空文字列/未定義文字列/null文字列をチェックするにはどうすればよいですか?
-
[解決済み] JavaScriptで現在のURLを取得する?
-
[解決済み] JavaScriptで要素のクラスを変更するにはどうすればよいですか?
-
[解決済み] JavaScriptで変数が文字列かどうかをチェックする
-
[解決済み] アップロード前に画像をプレビューする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Vueの要素ツリーコントロールに破線を追加する説明
-
元のイベントが実行されなかった後に要素を追加するためのjQueryソリューション
-
VUEグローバルフィルターの概念と留意点、基本的な使い方
-
Vueのクラススタイルの使い方の詳細
-
[解決済み】SyntaxError: JSONの位置1に予期しないトークンoがある。
-
[解決済み】Uncaught SyntaxError: JSONの位置0に予期しないトークンuがあります。
-
[解決済み】Node Version Manager のインストール - nvm コマンドが見つかりません。
-
[解決済み】リクエストに失敗していないのに、「TypeError: failed to fetch」が表示される。
-
フロントエンド null のプロパティ 'disabled' を読み取れない 問題が解決された
-
JavaScriptのgetElementById、getElementsByTagNam、getElementsByClassNameの違いと使い方