Saya punya sistem unggah file sederhana di aplikasi saya yang mengunggah file .mp3 ke firebase. Saya ingin memeriksa untuk memastikan file yang diunggah jelas merupakan file .mp3 dan tidak lebih dari 80MB. Apakah ada cara untuk melakukan ini?

Ini kode saya untuk mengunggah file, saat ini:

private void getMixForUpload() {
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
    intent.setType("mp3/*");

    Intent chooser = Intent.createChooser(intent, "Choose Your Mix");
    startActivityForResult(chooser, ACTION_REQUEST_GALLERY);

}

@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    if (requestCode == ACTION_REQUEST_GALLERY && resultCode == RESULT_OK) {
        Uri uri = data.getData();

        StorageReference filepath = FirebaseStorage.getInstance().getReference().child("DjMixes").child(uri.getLastPathSegment());
        filepath.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {


                taskSnapshot.getMetadata().getReference().getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                    @Override
                    public void onSuccess(Uri uri) {
                        Uri downloadUrl = uri;


                        firebaselogourl = downloadUrl.toString();

                    }
                });
            }

        }); 
}
2
markharrop 4 April 2021, 14:57

1 menjawab

Jawaban Terbaik

Jadi, pada dasarnya, Anda harus menggunakan file metadata . Mempertimbangkan bahwa Anda mendapatkan referensi yang benar dan segala sesuatu tentang proses pengunggahan tepat, berikut adalah cara untuk melakukan apa yang Anda inginkan:

taskSnapshot.getMetadata().addOnSuccessListener(new OnSuccessListener<StorageMetadata>() {
    @Override
    public void onSuccess(StorageMetadata storageMetadata) {
        long sizeMB = storageMetadata.getSizeBytes() / (1024 * 1024);
        String fileType = storageMetadata.getContentType();
    }
}).addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception exception) {
        // Handle your error, something bad happened :( 
    }
});

Sekarang Anda memiliki ukuran (dalam megabytes) dan jenis konten Anda bisa menggunakan pernyataan if seperti ini:

if (fileType.matches("audio/mpeg")  && sizeMB < 80)) {
   //your file is a audio file congratulations
   //your file also is bellow 80mb, good :)
} else {
   //the above statement is not true
}

sebagai OP menunjukkan itu jauh lebih baik untuk menggunakan fungsi .matches(), yang, dalam hal ini, adalah satu-satunya yang berfungsi.

Catatan: Jika Anda berencana menghapus file dari penyimpanan Firebase jika itu lebih besar dari 80MB atau itu bukan file mp3, saya sarankan Anda melakukan hal-hal ini sebelum mengunggah file. Pada dasarnya, periksa apakah file Anda mp3 dan lebih kecil dari 80MB, lalu unggah. Ini meningkatkan aliran program dan, terus terang, cara yang lebih baik untuk melakukannya.

2
Gaurav Mall 5 April 2021, 10:55