如何从firebase存储中获取所有文件?

时间:2018-02-12 22:43:11

标签: android firebase

我已将一些文件上传到Firebase目录中,我想列出它们并逐个下载。这里没有API /文档。你能帮帮我吗?

3 个答案:

答案 0 :(得分:0)

首先,您应该获取文件下载Url来检索它,最简单的方法是上传文件并在您的数据库中生成下载Url,所以之后您只需从存储中检索每个文件,如下所示: / p>

 private void downloadFile() {
    FirebaseStorage storage = FirebaseStorage.getInstance();
    StorageReference storageRef = storage.getReferenceFromUrl("<your_bucket>");
    StorageReference  islandRef = storageRef.child("file.txt");

    File rootPath = new File(Environment.getExternalStorageDirectory(), "file_name");
    if(!rootPath.exists()) {
        rootPath.mkdirs();
    }

    final File localFile = new File(rootPath,"imageName.txt");

    islandRef.getFile(localFile).addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() {
        @Override
        public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {
            Log.e("firebase ",";local tem file created  created " +localFile.toString());
            //  updateDb(timestamp,localFile.toString(),position);
        }
    }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception exception) {
            Log.e("firebase ",";local tem file not created  created " +exception.toString());
        }
    });
}

答案 1 :(得分:0)

我个人使用此方法,无论何时上传文件,将其下载URL保存在Firebase数据库中,如果要上传多个文件,请将其保存在数组中。 Firebase Storage没有方法可以一次下载和上传多个文件。 无论何时您想下载文件,都要访问您的firebase数据库以获取这些URL。

答案 2 :(得分:0)

截至2019年7月,Cloud Storage SDK的version 18.1.0现在支持列出存储桶中的所有对象。您只需要在const App = (props) => { const { authState, authData } = props; const [signedIn, setSignedIn] = useState(false); const [userInfo, setUserInfo] = useState(undefined); const [userInSystem, setUserInSystem] = useState(false); useEffect(() => { setSignedIn(!(authState !== 'signedIn')); const fetchUser = async () => { const data = await getUserInfo(); const userFound = await getUserByWorkEmail(data); setUserInSystem(userFound); setUserInfo(data); }; if (authState === 'signedIn') { fetchUser(); } }, [authState]); return ( <div> <BrowserRouter> <Switch> <Redirect exact={true} path="/" to={userInSystem ? '/dashboard' : '/unverified'} /> </Switch> </BrowserRouter> </LayoutProvider> </div> ); }; 中调用listAll()

StorageReference

如果要下载这些文件,可以使用options shown in the Docs之一。

注意,要使用此方法,您必须选择加入version 2 of Security Rules,这可以通过将StorageReference storageRef = FirebaseStorage.getInstance().getReference(); // Now we get the references of these images storageRef.listAll().addOnSuccessListener(new OnSuccessListener<ListResult>() { @Override public void onSuccess(ListResult result) { for(StorageReference fileRef : result.getItems()) { // TODO: Download the file using its reference (fileRef) } } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(Exception exception) { // Handle any errors } }); 设置为安全规则的第一行来完成:

rules_version = '2';