2017-11-19 4 views
1

ich ein Problem habe, wenn ich einen Filereader (von @ ionischen-native/Datei) Instanz erstellen:Ionic: undefined ist kein Konstruktor Filereader

let f = new FileReader(); 

Der folgende Fehler auftreten:

TypeError: undefined is not a constructor (evaluating 'new __WEBPACK_IMPORTED_MODULE_2__ionic_native_file__["FileReader"]()') 

Ich verstehe nicht warum!

Meine config:

  • NodeJS v8.9.1
  • npm: v5.5. &
  • ionische: 3.9.3
  • Winkel: v5.0.1
  • iOS-Emulator

Weitere Informationen ich diesen Code verwenden:

private readFile(file: any) { 
    const reader = new FileReader(); 
    reader.onloadend =() => { 
     const formData = new FormData(); 
     const imgBlob = new Blob([reader.result], {type: file.type}); 
     formData.append('file', imgBlob, file.name); 
     this.postData(formData); 
    }; 
    reader.readAsArrayBuffer(file); 
} 

ein Fehler auf neuen Filereader auftritt ()

Danke.

+0

anzeigen uns dein Paket.json. – realharry

+0

müssen Sie https://ionicframework.com/docs/native/file/ verwenden - zum Beispiel .... von der Website: 'import {Datei} von '@ ionic-native/file'; Konstruktor (privat-Datei: File). {} ... this.file.checkDir (this.file.dataDirectory 'mydir'), dann (_ => console.log ('Verzeichnis existiert')) .catch (err => console.log ('Verzeichnis existiert nicht')); 'Was versuchen Sie zu tun, nachdem Sie den FileReader erstellt haben? – ewizard

+0

Ich wurde von diesem Beispiel inspiriert: https://golb.hplar.ch/p/Uploading-pictures-from-Ionic-2-to-Spring-Boot Der erste Tag, an dem ich es verwendete, funktionierte, aber 2 Tage später, tat es nicht mehr arbeiten, ich weiß nicht warum! – Nassa

Antwort

0

ich meine Filereader Problem nicht behoben, aber ich verwendet, um eine andere Lösung:

public constructor(private fileTransfer: FileTransfer) { 
} 


public uploadImage(url: string, imageUri: string, fileName: string): Promise<boolean> { 
    return new Promise<boolean>((resolve, reject) => { 
     const options: FileUploadOptions = { 
      fileKey: 'file', 
      fileName: fileName, 
      httpMethod: 'POST' 
     }; 

     const fileTransfer: FileTransferObject = this.fileTransfer.create(); 
     fileTransfer.upload(imageUri, url, options) 
      .then(fileUploadResult => { 
       console.log('saveImage', fileUploadResult.response); 
       resolve(fileUploadResult.responseCode == 201); 
      }) 
      .catch(error => { 
       console.error('saveImage', error.code); 
       reject(error); 
      }); 
    }); 
} 

Die imageUri Form kommen:

addPicture() { 
    const options: CameraOptions = { 
     quality: 100, 
     sourceType: PictureSourceType.PHOTOLIBRARY, 
     destinationType: this.camera.DestinationType.FILE_URI, 
     encodingType: this.camera.EncodingType.JPEG, 
     mediaType: this.camera.MediaType.PICTURE 
    }; 

    this.camera.getPicture(options) 
     .then(imageUri => { 
      console.log(imageUri); 
      this.selectedPictureUriToSend = imageUri; 
      this.selectedPictureUri = normalizeURL(imageUri); 
     }) 
     .catch(error => { 
      console.error(error); 
     }); 
} 

Ich nenne die Vorschaufunktionen:

public async publish() { 
    try { 
     if (this.selectedPictureUriToSend) { 
      let fileName = this.selectedPictureUriToSend.substr(this.selectedPictureUriToSend.lastIndexOf('/') + 1); 
      this.uploadImage('http://localhost:8181/mythreadsproject/api/image', this.selectedPictureUriToSend, fileName) 
      .then(response => { 
       console.log(response); 
      }) 
      .catch(error => { 
       console.error(error); 
      }); 
     } 
    } catch (error) { 
     console.error(error); 
    } 
} 
Verwandte Themen