Как загрузить музыкальный файл на Firebase?

Подскажите, как из ссылок на музыкальный файл, загрузить файл на Firebase и создать ссылку. Делаю по аналогии как с картинкой, но картинку картинку раскладываем на байт при помощи растрового изображения. А тут я понимаю, что тоже нужно разложить на бит, но не знаю как. Вот код, он не правильный, создает ссылку, но не загружает файл на FB:

    ByteArrayOutputStream out = new ByteArrayOutputStream();
    final byte[] byteArray = out.toByteArray();
    final StorageReference filepath = mStorage.child("Audio").child(System.currentTimeMillis() + "new_audio.3gp");
    final UploadTask up = filepath.putBytes(byteArray);
    final Uri uri = Uri.fromFile(new File(fileName));
    Task<Uri> task = up.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
        @Override
        public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
            return filepath.getDownloadUrl();
        }
    }).addOnCompleteListener(new OnCompleteListener<Uri>() {
        @Override
        public void onComplete(@NonNull final Task<Uri> task) {
            if (task.getResult() == null) return;
            fileName = task.getResult().toString();
            assert fileName != null;
            GetAvatar(fileName);
        }
    }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {

        }
    });

Ответы (1 шт):

Автор решения: Андрей Мостовенко
FileInputStream fis = new FileInputStream(fileName);
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        byte[] b = new byte[1024];
        for (int readNum; (readNum = fis.read(b)) != -1;) {
            bos.write(b, 0, readNum);
        }
        byte[] bytes = bos.toByteArray();
        final StorageReference filepath = mStorage.child("Audio").child(System.currentTimeMillis() + "new_audio.mp3");
        final UploadTask up = filepath.putBytes(bytes);
        Task<Uri> task = up.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
            @Override
            public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) {
                return filepath.getDownloadUrl();
            }
        }).addOnCompleteListener(new OnCompleteListener<Uri>() {
            @Override
            public void onComplete(@NonNull final Task<Uri> task) {
                if (task.getResult() == null) return;
                fileName = task.getResult().toString();
                assert fileName != null;
                GetAvatar(fileName);
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {

            }
        });


    } catch (IOException ex) {
        ex.printStackTrace();
    }
→ Ссылка