Как загрузить музыкальный файл на 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();
}