角度拖放,事件中的空文件数组

Posted

技术标签:

【中文标题】角度拖放,事件中的空文件数组【英文标题】:Angular Drag and Drop, Empty files array in Event 【发布时间】:2021-11-08 21:51:19 【问题描述】:

我在另一个具有最新 Angular 的项目中使用了我的文件上传指令,但它似乎没有在 dataTransfer 中传递文件数组,因为当我查看事件(从侦听器)时,文件数组为空。请帮忙。

export class FileUploadDirective 
  @Input() multiple: boolean;
  @Input() accept: string[];
  @Input() maxFileSize: number;

  @Output() fileEmitter = new EventEmitter<Object>();
  constructor(
    private renderer: Renderer2,
    private elementRef: ElementRef,
    ) 
    this.multiple = false;
    this.accept = ['application/pdf'];
    this.maxFileSize = 1;
    this.renderer.setProperty(this.elementRef.nativeElement, 'draggable', true);
  

  @HostListener('dragover', ['$event']) onDragOver(evt: DragEvent)
    evt.preventDefault();
    evt.stopPropagation();
  

  @HostListener('drop', ['$event']) public onDrop(evt: DragEvent) 
    evt.preventDefault();
    evt.stopPropagation();

    console.log("event: ", evt);
    files = evt.dataTransfer?.files;
    
    if (files && files.length > 0) 
      let reader: FileReader = new FileReader();
      
      reader.readAsDataURL(files[0]);
      reader.onloadstart = (e) => 
        console.log('load start', this.multiple, this.accept, this.maxFileSize);
      

      reader.onprogress = (e) => 
        console.log('load progress');
      

【问题讨论】:

代码看起来不错。当你 console.log(evt) 时你会得到什么 空的 DataTransfer 文件区域,在将文件放入区域后。我发现它是这里描述的错误:github.com/danialfarid/ng-file-upload/issues/314 我过去为单次拖放创建了类似的指令,效果很好。让我看看我明天会更新你。 【参考方案1】:

对于遇到此错误的任何人,请不要分配files = evt.dataTransfer?.files;

必须由以下人员完成:

 console.log("event: ", evt.dataTransfer?.files.length);
    // files = evt.dataTransfer?.files;

    if (evt.dataTransfer!.files.length > 0) 
      let reader: FileReader = new FileReader();

      reader.readAsDataURL(evt.dataTransfer!.files[0]);
      reader.onloadstart = (e) => 
        console.log('load start', this.multiple, this.accept, this.maxFileSize);
      

文件长度是正确的,但编译器将第一个赋值作为错误。上面针对单个文件的解决方案。

【讨论】:

以上是关于角度拖放,事件中的空文件数组的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Python 计算目录中的文件数

python 蟒蛇统计文件夹中的文件数

text 计算文件夹和子文件夹中的文件数

查找目录中的文件数

如何使用 gsutil 计算存储桶文件夹中的文件数

根据 hdfs 目录中的文件名计算文件数