如何將FileReader.readAsDataURL結果分配給(全局)變量以備後用?將FileReader結果分配給(全局)變量供以後使用
我知道FileReader.result的工作原理asyc並可以在reader.onload = function(){...}中使用但我無法將它分配給全局變量(從匿名回調中)供以後使用。
我google了一下,發現了一些提示也在stackoverflow,但沒有什麼真正幫助我。有什麼建議麼?
這裏是我的代碼:
app.component.ts:
export class AppComponent {
postData: PostData;
image: File;
status: string;
imageBase64: string
constructor(private http: Http) {
this.imageBase64 = '';
}
fileChangeEvent(fileInput: any) {
if (fileInput.target.files && fileInput.target.files[0]) {
let file = fileInput.target.files[0];
let preview = document.querySelector('img')
let reader = new FileReader();
this.image = file;
reader.onload = function (e: any) {
let b64 = e.target.result
// this.imageBase64 = b64; // undefinded here
preview.src = b64;
console.log(file);
console.log(b64);
}
reader.readAsDataURL(this.image);
}
}
uploadimage() {
// do something later with the bae64 reader.result - after upload button pressed
}
app.component.html:
所有的<label>Choose a file</label>
<input type="file" class="inputfile" accept="image/*"(change)="fileChangeEvent($event)">
<img id="preview" src="" height="200" alt="Image preview...">
<button (click)="uploadimage()">Upload Image</button>
嘗試使用window.myGlobalVariable其中myGlobalVariable可以是您決定的任何內容。 –