JS FileReader ArrayBuffer в Byte [] для передачи содержимого файла - PullRequest
0 голосов
/ 18 марта 2019

У меня есть область загрузки файлов в моем приложении, она позволяет загружать изображения, .doc, .docx и pdf.

Мне нужно передать содержимое файла в байтах [] в мой APIчтобы он мог хранить файл.

Я пытался преобразовать ArrayBuffer в Uint8Array, но у меня ничего не получилось.

Вот мой код для чтения файла и получения необходимой информации

Любая помощь будет оценена.

           let myFile = ev.target.files[0];
            if(myFile.size > 0){
                let reader = new FileReader();
                var fileByteArray = [];
                reader.readAsArrayBuffer(myFile);
                reader.onloadend = (ev) => {                    
                        var uintArray = new Uint8Array(reader.result.toString().length);
                        //var arrayBuffer = new ArrayBuffer(reader.result);
                        //var array = new Uint8Array(arrayBuffer);
                    let resourceModel = new AddForumThreadResourceRequestModel({
                        contentType: myFile.type,
                        fileName: myFile.name,
                        fileContent: uintArray
                    });                   
                    console.log(resourceModel);
                    this.forumApi.AddThreadResource(resourceModel).subscribe(
                        data => {
                            if(data != null || data == true){
                                this.errorCtrl.presentToast("New resource has been added to the thread"); 
                        }                                    
                    });

            }   

1 Ответ

0 голосов
/ 18 марта 2019

Попробуйте использовать аргумент load события:

reader.onload = (e) => {                           
    var uintArray = new Uint8Array(reader.result);

    let resourceModel = new AddForumThreadResourceRequestModel({
        contentType: myFile.type,
        fileName: myFile.name,
        fileContent: uintArray
    });                    
    console.log(resourceModel);
    this.forumApi.AddThreadResource(resourceModel)
        .subscribe( data => {
            if(data != null || data == true){
                this.errorCtrl.presentToast("New resource has been added to the thread"); 
            }                                    
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...