【问题标题】:Why can't I download this file from Firebase Storage even though the file is there?为什么我不能从 Firebase 存储中下载该文件,即使该文件存在?
【发布时间】:2023-01-11 02:02:56
【问题描述】:

我收到以下错误。似乎找不到该文件,但我使用listAll() 函数进行检查,我在该位置看到了该文件。


Future<void> downloadMyApp(String MyAppURL) async { 
    final storagePath = await _firebaseStorage.ref().child('MyApp/Groups/groupChats/0exUS3P2XKFQ007TIMmm').listAll();

    for (var item in storagePath.items) {
      // The items under storageRef.
      print('##MyApp## downloadMyApp item: ' + item.toString()); //I see the item here and its path is identical to MyAppURL
    }

    final MyAppRef = _firebaseStorage.ref().child(MyAppURL);
    final dir = await getApplicationDocumentsDirectory();
    final filename = dir.path + receivedMyAppsDir + '/' + MyAppRef.name; 
    final file = File(filename);

    try {
      final downloadTask = MyAppRef.writeToFile(file);
      downloadTask.snapshotEvents.listen((taskSnapshot) {
        switch (taskSnapshot.state) {
          case TaskState.running:
            print('##MyApp## downloadMyApp downloadTask running');
            break;
          case TaskState.paused:
            print('##MyApp## downloadMyApp downloadTask paused');
            break;
          case TaskState.success:
            print('##MyApp## downloadMyApp downloadTask success');
            break;
          case TaskState.canceled:
            print('##MyApp## downloadMyApp downloadTask canceled');
            break;
          case TaskState.error:
            print('##MyApp## downloadMyApp downloadTask error');
            break;
        }
      });
    } catch (e) { //on FirebaseException
      // Caught an exception from Firebase.
      print('##MyApp## downloadMyApp ERROR: ' + e.toString());
    }

  }


E/FileDownloadTask(30544): Exception occurred during file write.  Aborting.
E/FileDownloadTask(30544): java.io.IOException: No such file or directory
E/FileDownloadTask(30544):  at java.io.UnixFileSystem.createFileExclusively0(Native Method)
E/FileDownloadTask(30544):  at java.io.UnixFileSystem.createFileExclusively(UnixFileSystem.java:317)
E/FileDownloadTask(30544):  at java.io.File.createNewFile(File.java:1006)
E/FileDownloadTask(30544):  at com.google.firebase.storage.FileDownloadTask.processResponse(FileDownloadTask.java:136)
E/FileDownloadTask(30544):  at com.google.firebase.storage.FileDownloadTask.run(FileDownloadTask.java:228)
E/FileDownloadTask(30544):  at com.google.firebase.storage.StorageTask.lambda$getRunnable$7$StorageTask(StorageTask.java:1072)
E/FileDownloadTask(30544):  at com.google.firebase.storage.-$$Lambda$StorageTask$q9YBoR_A8LB-JxTCx8JRQvabaZs.run(Unknown Source:2)
E/FileDownloadTask(30544):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
E/FileDownloadTask(30544):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
E/FileDownloadTask(30544):  at java.lang.Thread.run(Thread.java:920)
E/StorageException(30544): StorageException has occurred.
E/StorageException(30544): An unknown error occurred, please check the HTTP result code and inner exception for server response.
E/StorageException(30544):  Code: -13000 HttpResult: 200
E/StorageException(30544): No such file or directory
E/StorageException(30544): java.io.IOException: No such file or directory
E/StorageException(30544):  at java.io.UnixFileSystem.createFileExclusively0(Native Method)
E/StorageException(30544):  at java.io.UnixFileSystem.createFileExclusively(UnixFileSystem.java:317)
E/StorageException(30544):  at java.io.File.createNewFile(File.java:1006)
E/StorageException(30544):  at com.google.firebase.storage.FileDownloadTask.processResponse(FileDownloadTask.java:136)
E/StorageException(30544):  at com.google.firebase.storage.FileDownloadTask.run(FileDownloadTask.java:228)
E/StorageException(30544):  at com.google.firebase.storage.StorageTask.lambda$getRunnable$7$StorageTask(StorageTask.java:1072)
E/StorageException(30544):  at com.google.firebase.storage.-$$Lambda$StorageTask$q9YBoR_A8LB-JxTCx8JRQvabaZs.run(Unknown Source:2)
E/StorageException(30544):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
E/StorageException(30544):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
E/StorageException(30544):  at java.lang.Thread.run(Thread.java:920)
E/StorageException(30544): StorageException has occurred.
E/StorageException(30544): An unknown error occurred, please check the HTTP result code and inner exception for server response.
E/StorageException(30544):  Code: -13000 HttpResult: 200
E/StorageException(30544): No such file or directory
E/StorageException(30544): java.io.IOException: No such file or directory
E/StorageException(30544):  at java.io.UnixFileSystem.createFileExclusively0(Native Method)
E/StorageException(30544):  at java.io.UnixFileSystem.createFileExclusively(UnixFileSystem.java:317)
E/StorageException(30544):  at java.io.File.createNewFile(File.java:1006)
E/StorageException(30544):  at com.google.firebase.storage.FileDownloadTask.processResponse(FileDownloadTask.java:136)
E/StorageException(30544):  at com.google.firebase.storage.FileDownloadTask.run(FileDownloadTask.java:228)
E/StorageException(30544):  at com.google.firebase.storage.StorageTask.lambda$getRunnable$7$StorageTask(StorageTask.java:1072)
E/StorageException(30544):  at com.google.firebase.storage.-$$Lambda$StorageTask$q9YBoR_A8LB-JxTCx8JRQvabaZs.run(Unknown Source:2)
E/StorageException(30544):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
E/StorageException(30544):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
E/StorageException(30544):  at java.lang.Thread.run(Thread.java:920)
E/flutter (30544): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: [firebase_storage/unknown] An unknown error occurred
E/flutter (30544): 

【问题讨论】:

  • firebase 存储有规则,你必须编辑它们以允许读/写访问
  • @trinadhthatakula 我使用allow read, write: if true; 将我的存储设置为对任何读/写开放
  • 错误是在文件中.仔细检查文档名称是正确的。我猜你正在建造文档名称不正确。
  • @JohnHanley 文件名的路径是/data/user/0/com.example.MyApp_3/app_flutter/MyApp/MyAppAudioFiles/ReceivedMyApps/f7e5dd33-ed66-40e7-9f86-2957cfcae917High.mp3。我的代码的第一部分显示了我如何构建这个文件名。
  • 您必须验证该路径的每个部分是否有效。一个简单的测试是使用命令触摸 <that_file_path>.如果该命令失败,您就会知道问题所在。如果该命令成功,那么我的猜测是错误的。

标签: android flutter firebase dart google-cloud-storage


【解决方案1】:

你能解决这个问题吗?

我现在有同样的问题

【讨论】:

    猜你喜欢
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2021-04-16
    • 1970-01-01
    相关资源
    最近更新 更多