从Android应用程序将文件上传到Firebase存储中

问题描述 投票:0回答:1

我正在Android Studio中制作一个应用程序,并且正在使用Firebase Storage将用户信息存储在单个文本文件中,以后再上传到该应用程序的用户仪表板中。我已经编写了所有代码来执行此操作,并且尽我所能遵循了Firebase文档。当我运行我的应用程序(在我的摩托罗拉moto e5手机上经过测试)时,一切运行正常,然后创建了包含用户信息的文件。然后应该将其上载到Firebase存储部分,然后将其销毁。我知道第一件事和最后一件事情都发生了。

问题] >>

但是,当我进入Firebase来检查文件是否存在时。因此,我去查看Android Studio是否返回了任何错误,并且没有看到任何错误,并且一切运行顺利,但是我看不到Firebase中应该上传的文件

。因此,我在Internet上四处寻找,四分之一地看,一遍又一本的文档,我都尝试了。如果您发现某些对我没有帮助的信息,请共享链接。另外,如果您知道问题出在哪里,请分享。

故障排除方法

] >>

更具体地说,这些是我尝试过的一些事情:

  • 清理项目
  • 使缓存无效并重新启动
  • 更改build.gradle文件中的依赖项的SDK版本,并确保它们都是最新的,并且也尝试使用旧版本
  • 写了他们在另一个项目的文档中提供的示例代码,但仍然无法正常工作
  • 继续编写代码以查看文件是否被隐藏并且存储引用返回空值
  • 尝试删除file.delete();
  • [代码

] >>

此方法在被调用时应通过将其输入保存在名为0.txt1.txt2.txt等的文件中来创建用户想要完成的“目标”。然后,该方法应将文件上传到Firebase Storage,这就是问题所在。它不会出现在数据库中。

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();
}

任何想法都受到赞赏。

我正在Android Studio中制作一个应用程序,并且正在使用Firebase Storage将用户信息存储在单个文本文件中,以后再上传到该应用程序的用户仪表板中。我已经写了所有代码...

当您呼叫putFile Firebase 开始

时,将数据上传到后台,以便您的用户可以继续使用该应用程序。但是您的代码此后立即在本地文件上调用delete,这意味着您在Firebase完成(甚至可能开始)上载之前删除了本地文件。

技巧是按照Firebase文档中的monitor the upload progress操作,并且仅在上传完成后才删除本地文件。

基于该文档中的示例:

// 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();

    }
});
android firebase-storage
1个回答
0
投票

当您呼叫putFile Firebase 开始

© www.soinside.com 2019 - 2024. All rights reserved.