我在 Angular 7(打字稿)中遇到了类似的问题,这就是我解决问题的方法。
我想做的是访问在 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 函数在服务文件中。没有我的评论,组件文件中的代码与此完全相同。