上传适配器未定义使用ckeditor5-angular上传图片的问题

前端之家收集整理的这篇文章主要介绍了上传适配器未定义使用ckeditor5-angular上传图片的问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这个问题可能已经有了答案,但没有一个是Angular特有的.
这里是其中的一些

> CKEditor 5 and Image Button
> How to enable image upload support in CKEditor 5?
> Insert image to CKeditor

我正在使用Angular 5并遵循this文档来实现ckeditor5-angular.

但我遇到图像上传问题,当我尝试上传图片时,它在浏览器控制台中说.

filerepository-no-upload-adapter: Upload adapter is not defined. Read more: 07004

我已经尝试过搜索这个问题并且能够找到很多解决方案,但实际上我无法理解其中的一个,因为它们不是Angular特有的.

请帮助我如何上传图片.

解决方法

在component.html文件添加以下代码

<ckeditor [editor]="Editor" (ready)="onReady($event)"></ckeditor>

在component.ts文件中创建onReady(数据)函数

onReady(eventData) {
    eventData.plugins.get('FileRepository').createUploadAdapter = function (loader) {
      console.log(btoa(loader.file));
      return new UploadAdapter(loader);
    };
  }

然后创建一个名为UploadAdapter的类,并在其中添加以下代码

export class UploadAdapter {
  private loader;
  constructor(loader: any) {
    this.loader = loader;
    console.log(this.readThis(loader.file));
  }

  public upload(): Promise<any> {
    //"data:image/png;base64,"+ btoa(binaryString) 
    return this.readThis(this.loader.file);
  }

  readThis(file: File): Promise<any> {
    console.log(file)
    let imagePromise: Promise<any> = new Promise((resolve,reject) => {
      var myReader: FileReader = new FileReader();
      myReader.onloadend = (e) => {
        let image = myReader.result;
        console.log(image);
        return { default: "data:image/png;base64," + image };
        resolve();
      }
      myReader.readAsDataURL(file);
    });
    return imagePromise;
  }

}

这里默认表示上传图片网址.我已经在base64中转换了文件但您可以调用服务器URL并上传您的文件,然后使用相同的密钥返回服务器URL.

EnjOy CodInG

猜你在找的Angularjs相关文章