📌  相关文章
📜  如何使用 ReactJS 列出 firebase 存储中的所有文件?

📅  最后修改于: 2022-05-13 01:56:20.243000             🧑  作者: Mango

如何使用 ReactJS 列出 firebase 存储中的所有文件?

以下方法介绍了如何使用 react 列出来自 firebase 存储的所有文件。我们使用了 firebase 模块来实现这一点。

创建 React 应用程序并安装模块:

第 1 步:使用以下命令创建一个 React-app:

npx create-react-app myapp

第 2 步:创建项目文件夹(即 myapp)后,使用以下命令移动到该文件夹:

cd myapp

项目结构:我们的项目结构将如下所示。

第 3 步:创建 ReactJS 应用程序后,使用以下命令安装 firebase 模块:

npm install firebase@8.3.1 --save

第 4 步:转到您的 firebase 仪表板并创建一个新项目并复制您的凭据。

const firebaseConfig = {
      apiKey: "your api key",
      authDomain: "your credentials",
      projectId: "your credentials",
      storageBucket: "your credentials",
      messagingSenderId: "your credentials",
      appId: "your credentials"
};

第 5 步:通过使用以下代码创建一个firebase.js文件,将 Firebase 初始化到您的项目中。

firebase.js
import firebase from 'firebase';
  
const firebaseConfig = {
    // Your Credentials
};
  
firebase.initializeApp(firebaseConfig);
var storage = firebase.storage();
  
export default storage;


App.js
import { useState } from 'react';
import storage from './firebase';
  
function App() {
  
  // States for data and image
  const [data, setData] = useState([]);
  const [image, setImage] = useState('');
  
  const upload = () => {
    if (image == null)
      return;
    // Sending File to Firebase Storage
    storage.ref(`/images/${image.name}`).put(image)
      .on("state_changed", alert("success"), alert);
  }
  
  // List All Files
  const listItem = () => {
    storage.ref().child('images/').listAll()
      .then(res => {
        res.items.forEach((item) => {
          setData(arr => [...arr, item.name]);
        })
      })
      .catch(err => {
        alert(err.message);
      })
  }
  
  return (
    
      
         {           setImage(e.target.files[0])         }} />                  





                 

        {           data.map((val) => (             

{val}

          ))         }       
    
  ); }    export default App;


第 6 步:现在转到 firebase 项目中的存储部分并更新您的安全规则。这里我们处于测试模式,所以我们允许读取和写入为真。更新如下所示的代码后,单击发布。

第 7 步:现在实现列表部分。在这里,我们将使用一个名为listAll的方法,它可以帮助我们从 firebase 存储中获取所有文件的列表。

应用程序.js

import { useState } from 'react';
import storage from './firebase';
  
function App() {
  
  // States for data and image
  const [data, setData] = useState([]);
  const [image, setImage] = useState('');
  
  const upload = () => {
    if (image == null)
      return;
    // Sending File to Firebase Storage
    storage.ref(`/images/${image.name}`).put(image)
      .on("state_changed", alert("success"), alert);
  }
  
  // List All Files
  const listItem = () => {
    storage.ref().child('images/').listAll()
      .then(res => {
        res.items.forEach((item) => {
          setData(arr => [...arr, item.name]);
        })
      })
      .catch(err => {
        alert(err.message);
      })
  }
  
  return (
    
      
         {           setImage(e.target.files[0])         }} />                  





                 

        {           data.map((val) => (             

{val}

          ))         }       
    
  ); }    export default App;

运行应用程序的步骤:从项目的根目录使用以下命令运行应用程序:

npm start

输出:现在打开浏览器并转到http://localhost:3000/ ,您将看到以下输出: