Angular 7 (typescript) で同様の問題がありましたが、これが私の問題を解決した方法です。
私がやりたかったのは、fileReader -> reader.onload 内で起こっていた base64 変換にアクセスすることでした。
次に、そのパラメーターを別のメソッドに渡し、そこで JSON オブジェクトに変換してから API に投稿すると、投稿に別のパラメーターも投稿したいことがわかります。(このコードでは追加されていません)
私が最初にしたことは、メソッドの外部にアクセスするために潜在的に必要なものを宣言することでした。
base: any = null;
base64File: any = null;
fileToTest: any = null;
次に、アップロードイベントが発生したときにpdfをbase64に変換しました
convertToBase64 (e){
this.fileToTest = e.target.files[0];
var reader = new FileReader();
reader.onload = () => {
this.base64File = reader.result.slice(28);
};
reader.onerror = function (error) {
console.log('Error: ', error);
}.bind(this.base64File);
reader.readAsDataURL(this.fileToTest);
return this.base64File;
}
最後に別の方法で base64 ファイルにアクセスします
onSubmit() {
console.log("base 64 file is visible", this.base64File);
var base =
{
"FileBase64": this.base64File,
"Path": "document",
"FileType": ".pdf"
};
console.log("JSON object visible", base);
this.uploadService.base64Post(base);
}
すべてが機能するようになりました。うまくいけば、これが他の誰かが同じ問題を抱えていることに気付くのに役立つかもしれません.
Angular 7 を使用すると、コードはコンポーネント ファイルにあり、post 関数は Service ファイルにあります。私のコメントがなければ、コンポーネント ファイルのコードはまさにこのようなものです。