2

我正在构建一个网络工具,允许用户从不同来源拖放图像。我可以从文件系统和浏览器中拖放对象,但我无法使用 adobe illustrator 中的对象执行此操作。

    @HostListener('drop', ['$event']) public onDrop(event) {
      event.preventDefault();
      event.stopPropagation();
      event.dragstart = true;
      let dataTransfer = event.dataTransfer;
      let types: string = dataTransfer.types;
      console.log(types);
      let transfer: any;
      if (types.indexOf("Files")>-1)
        this.handleFiles(dataTransfer.files);
      else{
        console.log("elsewhere")
        transfer = dataTransfer.getData(types);
      }
    }

    handleFiles(files) {

      for (var i = 0; i < files.length; i++) {
        var file = files[i];
        var imageType = /image.*/;
        if (!file.type.match(imageType)) { continue; }
        var img = <HTMLElement>document.getElementById("imagePlaceholder");
        // img.file = file;
        var reader = new FileReader();
        reader.onload = function (event: any) {
          img.setAttribute('src', event.target.result);
        };
        reader.readAsDataURL(file);
      }
    }

的HTML:

<div class="dropzone" imageDnD (drop)=handleDrop($event)></div>

事件中的文件类型是com.adobe.cep.dnd.pasteboardtype。当我阅读文件类型时,我得到以下信息。

"{"assetList":[{"data":[""],"type":"image"},{"data":[""],"type":"text"}],"source":"com.adobe.illustrator","version":"23.0"}"

虽然我们应该收到一些 SVG 或图像。

4

0 回答 0