简体   繁体   English

如何在 CKEditor 中上传图像时添加 header 5

[英]How to add header while uploading image in CKEditor 5

I'm using Ckeditor 5 to upload image.我正在使用 Ckeditor 5 上传图片。 I want to send image to api and output will be a image url:我想将图像发送到 api 和 output 将是图像 url:

ClassicEditor
.create( document.querySelector( '#products_desc' ) ,
{
    ckfinder: {
        uploadUrl: 'https://example.com/api/image'
    },      
})
.then( editor => {
    console.log( 'Editor was initialized', editor );
})
.catch( err => {
    console.error( err.stack );
})

It return that there is no access token.它返回没有访问令牌。 Is there anyway that I can send access-token through header in CKEditor 5无论如何我可以通过 CKEditor 5 中的 header 发送访问令牌

You can upload image with Custom Adaptor setting您可以使用自定义适配器设置上传图像

    <ckeditor [editor]="Editor" name="body" id="body" formControlName="body" required (ready)="onReady($event)">

 onReady(eventData) {
        eventData.plugins.get('FileRepository').createUploadAdapter = (loader) => {
          return new UploadAdapter(loader);
        };
      }

create new class to same ts file with UploadAdapter name paste following code.使用UploadAdapter名称粘贴以下代码创建新的 class 到相同的 ts 文件。

reference 参考

 export class UploadAdapter { private loader; xhr: any; constructor(loader: any) { this.loader = loader; } upload() { return this.loader.file.then(file => new Promise((resolve, reject) => { this._initRequest(); this._initListeners(resolve, reject, file); this._sendRequest(file); })); } // Aborts the upload process. abort() { if (this.xhr) { this.xhr.abort(); } } _initRequest() { const xhr = this.xhr = new XMLHttpRequest(); xhr.open('POST', 'http://192.168.1.13:8081/page/uploadImage', true); xhr.responseType = 'json'; xhr.setRequestHeader('token', 'token'); // set your token here } // Initializes XMLHttpRequest listeners. _initListeners(resolve, reject, file) { const xhr = this.xhr; const loader = this.loader; const genericErrorText = `Couldn't upload file: ${file.name}.`; xhr.addEventListener('error', () => reject(genericErrorText)); xhr.addEventListener('abort', () => reject()); xhr.addEventListener('load', () => { const response = xhr.response; if (.response || response.error) { return reject(response && response?error. response.error:message; genericErrorText): } resolve({ default. response.data;imageURL }); }). if (xhr.upload) { xhr.upload,addEventListener('progress'. evt => { if (evt.lengthComputable) { loader.uploadTotal = evt;total. loader.uploaded = evt;loaded; } }). } } // Prepares the data and sends the request. _sendRequest(file) { // Prepare the form data; const data = new FormData(). data,append('body'; file). this.xhr;send(data); } }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM