【问题标题】:ERROR TypeError: Cannot read property 'files' of undefined错误类型错误:无法读取未定义的属性“文件”
【发布时间】:2018-03-06 22:10:27
【问题描述】:

我正在使用两个 Angular(2+) 工具:ng2-file-upload 和 angular2-img-cropper。

我正在尝试使用 ng2-file-upload 的 Dropzone 在 angular2-img-cropper 的裁剪工具中加载图像。 如果我更改输入文件(HTMLElement),我实际上可以在裁剪工具中加载选定的图像,但它会因拖放区域而失败。

以下是我如何使用输入来做到这一点:

HTML:

<input type="file" id="file-name" 
                    ng2FileSelect 
                    [uploader]="uploader"
                    (change)="fileChangeListener($event, cropper)"/>

TS:

fileChangeListener($event : any, cropperComp: ImageCropperComponent) {

    this.cropper = cropperComp;

    let image = new Image();
    var file:File = $event.target.files[0];
    var myReader:FileReader = new FileReader();
    var that = this;

    myReader.onloadend = function (loadEvent: any) {
        image.src = loadEvent.target.result;
        that.cropper.setImage(image);
    };
    myReader.readAsDataURL(file);

}

正如我所说,这很好用。

但是,当我尝试使用 Dropzone 时出现此错误:

ERROR TypeError: Cannot read property 'files' of undefined [...] at ProfileComponent.fileChangeListener

HTML(拖放区):

<div ng2FileDrop
                    [ngClass]="{'nv-file-over': hasBaseDropZoneOver}"
                    (fileOver)="fileOverBase($event)"
                    [uploader]="uploader"
                    class="well my-drop-zone"     
                    (onFileDrop)="fileChangeListener($event, cropper)"
                    >
                    Base drop zone
                </div>

【问题讨论】:

    标签: javascript angular typescript drag-and-drop


    【解决方案1】:
    var file:File = $event.target.files[0];
    

    应该是:

    var file:File = $event.files[0];
    

    【讨论】:

    • 我之前试过了,但是控制台说:Cannot read property '0' of undefined
    • @phse ` this.onFileDrop.emit(transfer.files);` 我读了源代码,onFileDrop 直接发出文件。可以打印$event查看详情
    • 您好,感谢您的宝贵时间。我是新手,我不知道在哪里尝试。
    • 在现有代码的正上方添加console.log($event); `var file:File = $event.target.files[0];` 并使用您的开发工具检查已打印的内容
    • 它似乎是作为文件列表传递的。 FileList {0: File(1874089), length: 1} 0 : File(1874089) {name: "panda.jpg", lastModified: 1520284581576, lastModifiedDate: Mon Mar 05 2018 16:16:21 GMT-0500 (Hora estándar del Este), webkitRelativePath: "", size: 1874089, …} length : 1 __proto__ : FileList 如果我尝试更改 var file:FileList 那么 myReader.readAsDataURL(file) 会给出错误提示:它不能分配给“Blob”类型的参数。 'FileList' 类型中缺少属性 'size'。 感谢您的时间,我想与学生一起工作很难:O
    猜你喜欢
    • 2018-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 2021-11-22
    • 2018-07-12
    • 2021-12-16
    相关资源
    最近更新 更多