[解決済み] Loading an image to a <img> from <input file>
2022-11-30 09:25:14
Question
I'm trying to load an image selected by the user through an element.
I added a onchange event handler to the input element like this:
<input type="file" name="picField" id="picField" size="24" onchange="preview_2(this);" alt=""/>
and the preview_2 function is:
var outImage ="imagenFondo";
function preview_2(what){
globalPic = new Image();
globalPic.onload = function() {
document.getElementById(outImage).src = globalPic.src;
}
globalPic.src=what.value;
}
where outImage has the id value of the tag where I want the new picture to be loaded.
However, it appears that the onload never happens and it does not load anything to the html.
What should I do?
How to solved?
In browsers supporting the File API をサポートしているブラウザでは ファイルリーダー のコンストラクタを使用して、一度ユーザーによって選択されたファイルを読み込むことができます。
例
document.getElementById('picField').onchange = function (evt) {
var tgt = evt.target || window.event.srcElement,
files = tgt.files;
// FileReader support
if (FileReader && files && files.length) {
var fr = new FileReader();
fr.onload = function () {
document.getElementById(outImage).src = fr.result;
}
fr.readAsDataURL(files[0]);
}
// Not supported
else {
// fallback -- perhaps submit the input to an iframe and temporarily store
// them on the server until the user's session ends.
}
}
ブラウザのサポート
- IE 10
- サファリ 6.0.2
- Chrome 7
- Firefox 3.6
- オペラ 12.02
File API がサポートされていない場合、(ほとんどのセキュリティ意識の高いブラウザでは) ファイル入力ボックスからファイルのフル パスを取得したり、データにアクセスしたりすることはできません。 唯一の実行可能なソリューションは、フォームを隠し iframe に送信して、ファイルをサーバーに事前にアップロードさせることです。 次に、そのリクエストが完了したときに、アップロードされたファイルの場所に画像の src を設定できます。
関連
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] Webフォームのフィールド/入力タグでブラウザのオートコンプリートを無効にするにはどうすればよいですか?
-
[解決済み] jQueryで入力を無効化/有効化する?
-
[解決済み] CSSでテキストや画像の背景を透明にするには?
-
[解決済み] 画像の横のテキストを縦に揃える?
-
[解決済み] アップロード前に画像をプレビューする
-
[解決済み] <button> vs. <input type="button" />. Which to use?
-
[解決済み】オブジェクトからプロパティを削除する(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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] アップロード前に画像をプレビューする
-
[解決済み] 文字列がすべて同じ部分文字列で構成されているかどうかを調べるにはどうすればよいですか?
-
[解決済み] なぜ "use strict "はパフォーマンスを10倍向上させるのか?
-
[解決済み] JavaScriptを使用してHTML要素に属性を追加/更新するには?
-
[解決済み] React js 親コンポーネントから子コンポーネントの状態を変更する
-
[解決済み] JavaScriptのtoString()関数をオーバーライドして、デバッグ用に意味のある出力を提供することは可能でしょうか?
-
[解決済み] javascript includes() 大文字小文字を区別しない
-
[解決済み] $.ajax実行中にローディングイメージを表示する
-
[解決済み] javascriptのキャンバスで画像をリサイズする (スムーズ)
-
[解決済み] Fetch: ステータスがOKでない場合、プロミスを拒否し、エラーをキャッチするか?