Upload de arquivos para o Firebase Storage do aplicativo Android

Ethan Pervere

Estou fazendo um aplicativo no Android Studio e estou usando o Firebase Storage para armazenar informações do usuário em arquivos de texto individuais, para depois serem carregados no painel do usuário do aplicativo. Eu escrevi todo o código para fazer isso e segui a documentação do Firebase da melhor maneira possível. Quando executo meu aplicativo (testado no meu celular Motorola moto e5) tudo funciona perfeitamente, e então é criado o arquivo com as informações do usuário. Em seguida, ele deve ser carregado para a seção Firebase Storage e, em seguida, deve ser destruído. Eu sei que o primeiro e o último eventos aconteceram.

Problema

No entanto, quando entro no Firebase para verificar se o arquivo está lá, ele não está. Então, vou verificar se o Android Studio retornou algum erro e não vejo erros e se tudo correu bem, mas não vejo os arquivos no firebase que deveriam ser carregados . Então procurei em toda a internet, quatrom após quatrom, documentação após documentação, e tentei de tudo. Se você encontrar algo que possa me ajudar que eu não encontrei, por favor, compartilhe o link. Além disso, se você souber qual é o problema, compartilhe.

Métodos de solução de problemas

Para ser mais específico, estas são algumas coisas que tentei:

  • Projeto Limpo
  • Invalidar caches e reiniciar
  • Altere a versão do SDK nas dependências do build.gradlearquivo e certifique-se de que estão todas atualizadas e tente as antigas
  • Escreveu o código de exemplo que eles fornecem na documentação em um projeto diferente e ainda não funcionou
  • Manteve a escrita do código para ver se o arquivo estava oculto e a referência de armazenamento retornava nulo
  • Tentei remover a file.delete();linha

Código

Este método quando chamado deve criar uma "meta" o usuário quer realizar, salvando a sua entrada em um arquivo chamado 0.txt, 1.txt, 2.txte assim por diante. Em seguida, o método deve fazer upload do arquivo para o Firebase Storage, e é aí que está o problema. Ele não aparecerá no banco de dados.

private void createGoal(String activity, String timeframe, String number, String unit) throws IOException {

     //creates an instance of the Main Dashboard class inorder to access the variable counterString.
     MainDashboard dBoard = new MainDashboard();

     //Names the 0.txt, 1.txt, 2.txt, and so on
     file = new File(dBoard.counterString + ".txt");

     //Creates the actual file
     file.createNewFile();

     //Creates the writer object that will write to the file
     FileWriter writer = new FileWriter(file);

     //Writes to the text file
     writer.write(activity + " : " + "0 / "+ number + " " + unit + " in " + timeframe);

     //Closes the Writer
     writer.close();

     //Creates a Uri from the file to be uploaded
     upload = Uri.fromFile(new File(activity + ".txt"));

     //Uploads the file exactly as the documentation says, but it doesn't work
     UploadTask uploadTask = storageRef.putFile(upload);

     //Deletes the file from the local system
     file.delete();
}

Quaisquer ideias são apreciadas.

Frank van Puffelen

Ao chamar, o putFileFirebase começa a enviar os dados em segundo plano, para que o usuário possa continuar a usar o aplicativo. Mas seu código chama imediatamente deleteo arquivo local depois disso, o que significa que você está excluindo o arquivo local antes que o Firebase conclua (ou possivelmente comece) o upload.

O truque é monitorar o andamento do upload, conforme mostrado na documentação do Firebase, e excluir o arquivo local apenas quando o upload for concluído.

Com base no exemplo dessa documentação:

// Listen for state changes, errors, and completion of the upload.
uploadTask.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
    @Override
    public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
        double progress = (100.0 * taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount();
        System.out.println("Upload is " + progress + "% done");
    }
}).addOnPausedListener(new OnPausedListener<UploadTask.TaskSnapshot>() {
    @Override
    public void onPaused(UploadTask.TaskSnapshot taskSnapshot) {
        System.out.println("Upload is paused");
    }
}).addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception exception) {
        // Handle unsuccessful uploads
    }
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
    @Override
    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
        // Handle successful uploads on complete
        // ...

        //Deletes the file from the local system
        file.delete();

    }
});

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Função de nuvem do Firebase para upload de arquivos

Upload de arquivos de mapeamento do ProGuard para o Firebase

Upload de arquivos diretamente para o Google Cloud Storage para aplicativo GAE

Como fazer upload de arquivos para o Firebase Storage usando o Firebase Admin em Java?

Upload de arquivos (arquivos de vídeo) para o servidor S3 do Android usando URLs assinados gerados a partir do aplicativo do servidor

Tamanho limite do Cloud Storage para Firebase de upload de vários arquivos (combinados)

Upload de arquivos para Firebase Storage usando REST API

Automatize o upload de arquivos do Google Cloud Storage para o Bigquery

Como fazer upload de vídeos para o aplicativo Firebase Storage for React

Faça upload de arquivos para o site WordPress a partir do aplicativo iOS

Upload de arquivos grandes para o Google Storage GCE a partir de um pod do Kubernetes

Upload de arquivos para o Google Cloud Storage com Flask

Faça upload apenas de arquivos atualizados para o Blob Storage

Faça upload de arquivos .raw para o Google Cloud Storage

Faça upload de vídeo para o YouTube do Firebase Storage usando a função de nuvem

Upload de conteúdo do aplicativo para Firebase

Como fazer upload de arquivos para o armazenamento do Firebase em .Net C # Windows Form?

Como fazer upload de arquivos PDF e docx para o servidor a partir do pacote principal do aplicativo?

Faça upload do aplicativo Rails para o Firebase

Arquivo de upload do SDK Admin do Firebase para o Google Cloud Storage

O upload de dados do Firebase está travando o aplicativo Android

Como fazer upload de arquivos para o Firebase Storage usando um userId e token obtidos por meio da API REST

Como fazer upload de vários arquivos para o Firebase?

Upload de imagem do Firebase Storage - Função para retornar o URL da imagem após o upload

Android: baixe a lista de arquivos do Firebase storage

Como posso fazer upload de arquivos para o Cloud Storage por meio do Cloud Functions e usar o Firestore para controlar o acesso ao Cloud Storage?

Upload de um arquivo JSON com Pyrebase para o Firebase Storage do Google App Engine

Faça upload de fotos do SD para o Firebase Storage sem todos os caminhos

Faça upload de fotos do SD para o Firebase Storage sem todos os caminhos