ブラウザはローカルディスクのフルパスを使用せず、代わりにファイル名とfakepathを連結します。 TypeScriptまたはangular 2を使用して、fakepathからファイル(イメージ)にアクセスする方法はありますか?
私はこれを持っています:
<img src="{{path}}" />
ここで、私のパス変数は.tsファイルに 'fakepath': "C:\ fakepath\pic.jpg"を格納します。
EditThis 質問では、javascriptを使用してfakepathから画像ファイルをプレビューする方法について説明しています。 Jsで可能であれば、tsの場合と同じではありませんか?
これはあなたが望むことをするはずです:
<input type='file' (change)="readUrl($event)">
<img [src]="url">
readUrl(event:any) {
if (event.target.files && event.target.files[0]) {
var reader = new FileReader();
reader.onload = (event: ProgressEvent) => {
this.url = (<FileReader>event.target).result;
}
reader.readAsDataURL(event.target.files[0]);
}
}
@GünterZöchbauerの答えに加えて、これを追加するまでこれはうまくいきませんでした:
reader.onload = function(e:any){
this.url = e.target.result;
}
「any」を追加する前に、エラーが発生していました。
property 'result' does not exist on type 'eventtarget'
イベントを任意のタイプに変更すると機能します。そのようにして、Angularはそのプロパティにアクセスできます。
readUrl(event) {
if (event.target.files && event.target.files[0]) {
var reader = new FileReader();
reader.onload = (event:any) => {
this.url = event.target.result;
}
reader.readAsDataURL(event.target.files[0]);
}
}
動いている
example.component.html
<input type="file" (change)="onFileChanged($event)" required />
<img [src]="imageShow" height="200"> <br/>
example.component.ts
imageShow: any= '';
onFileChanged(event) {
this.file = event.target.files[0]
var reader = new FileReader();
reader.readAsDataURL(event.target.files[0]);
reader.onload = (event) => {
this.imageShow = (<FileReader>event.target).result;
}
}