Как загрузить аудиофайл в хранилище Firebase? - PullRequest
0 голосов
/ 10 ноября 2019

Я хочу загрузить аудиофайл, сохраненный во внутренней памяти моего мобильного устройства, в хранилище firebase. Вот мой код

TextView filePathText;
Button sUrlBtn, upload;
Uri audio_uri = null;

public class AddPostActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_post);

        filePathText = findViewById(R.id.filePathText);
        upload = findViewById(R.id.add_upload);
        sUrlBtn = findViewById(R.id.add_filePath);

        sUrlBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
                intent.setType("*/*");
                startActivityForResult(intent, 10);
            }
        });
        ...
        upload.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                String fileName = filePathText.getText().toString().trim();
                fileName += "/test.mp3";

                Uri uri = Uri.fromFile(new File(fileName));
                uploadData(fileName, uri);
            }
        }
    });

private void uploadData(final String file, final Uri uri) {
    ...
    StorageReference ref = FirebaseStorage.getInstance().getReference();
    ref.child("tAudio").child("test_audio.mp3").putFile(uri)
        .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                Task<Uri> uriTask = taskSnapshot.getStorage().getDownloadUrl();
                while (!uriTask.isSuccessful()) ;

                if (uriTask.isSuccessful()) {
                    audio_uri = null;
                }
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Log.d("AddPostActivity", "TEST onFailure()...\nException : " + e.getMessage());
            }
        });
}
...

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    if (resultCode == RESULT_OK) {
        if (requestCode == 10) {
            audio_uri = data.getData();
            filePathText.setText(audio_uri.getEncodedPath());
        } 
    }
    super.onActivityResult(requestCode, resultCode, data);
}

Что я хочу сделать, это ... 1. Получить путь к файлу из аудиофайла внутренней памяти, нажав sUrlBtn 2. Загрузить этот аудиофайл в хранилище Firebase, нажавupload

Но когда я загружаю этот файл, e.getMessage() выглядит следующим образом. Исключение: произошла неизвестная ошибка, проверьте ответный код HTTP и внутреннее исключение для ответа сервера. Есть ли какое-либо решение для загрузки файла из внутренней памяти андроид мобильного устройства в хранилище firebase ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...