【Angular】画像のアップロードとPreview表示について
【Angular】画像のアップロードとPreview表示について:
Angularでの開発を最近開始したのですが、ファイルアップロードのところでかなり詰まってしまったので、備忘録として残しておきます。
・Twitterのようなアプリケーションを作成する
・その中に画像のアップロードとその画像の表示を行う
・画像のアップロード
・アップロード画像の表示
・そもそも、アップロードどうやってやるのかわからない
・Fileを扱う時にはFile Readerを用いる
・htmlのimgタグの中で表示させるためには、urlの形にする必要がある
・File Readerの中でurlを生成するためには、readAsDataUrlを用いる(これを用いることによって、readerのresultプロパティにurlの文字列が入る)
以下、新たなツイートをする部分のhtmlとtypescript
https://stackoverflow.com/questions/38476315/angular2-file-input-onchange/38476440
https://developer.mozilla.org/ja/docs/Web/API/FileReader
https://developer.mozilla.org/ja/docs/Web/API/FileReader/readAsDataURL
もし、他にベストプラクティス(普通こうやってやるでしょ)がありましたら知りたいです。
よろしくお願いいたします。
Angularでの開発を最近開始したのですが、ファイルアップロードのところでかなり詰まってしまったので、備忘録として残しておきます。
前提
・Twitterのようなアプリケーションを作成する・その中に画像のアップロードとその画像の表示を行う
今回のゴール
・画像のアップロード・アップロード画像の表示
詰まったとこ
・そもそも、アップロードどうやってやるのかわからない
まとめ
・Fileを扱う時にはFile Readerを用いる・htmlのimgタグの中で表示させるためには、urlの形にする必要がある
・File Readerの中でurlを生成するためには、readAsDataUrlを用いる(これを用いることによって、readerのresultプロパティにurlの文字列が入る)
ソースコード
以下、新たなツイートをする部分のhtmlとtypescriptcontent-main.component.html
<div class="home-tweet-box tweet-box-component tweet-user"> <input class="tweet-input" [(ngModel)]="newTweetContents" placeholder="いまどうしてる?"> <button (click)="setTweetContents(newTweetContents)">ツイート</button> <input type='file' accept="image/*" (change)="onChangeInput($event)"> </div> <img [src]=imageSrc alt="" />
content-main.component.ts
imageSrc = ''; reader = new FileReader(); onChangeInput(evt) { const file = evt.target.files[0]; this.reader.onload = ((e) => { this.imageSrc = e.target['result']; }); this.reader.readAsDataURL(file); }
最終的に参考にしたURL
https://stackoverflow.com/questions/38476315/angular2-file-input-onchange/38476440https://developer.mozilla.org/ja/docs/Web/API/FileReader
https://developer.mozilla.org/ja/docs/Web/API/FileReader/readAsDataURL
お願い
もし、他にベストプラクティス(普通こうやってやるでしょ)がありましたら知りたいです。よろしくお願いいたします。
コメント
コメントを投稿