上传文件到firebase存储不工作

8zzbczxx  于 2023-01-21  发布在  其他
关注(0)|答案(3)|浏览(182)

我确实在firebase storage上读了文档,但是由于某种原因我不能让它工作。
我正在使用react,我想要的是能够上传一个文件到我的firebase存储,但我一直得到错误

TypeError: thisRef.put(...).then is not a function

我想我需要换个Angular 看这件事。
下面是我的函数

uploadFile = (e) => {
e.preventDefault();
  var file = this.refs.filePath.files[0];
  var storageRef = firebase.storage().ref();

  //dynamically set reference to the file name
  var thisRef = storageRef.child(file.name);

  //put request upload file to firebase storage
  thisRef.put(file).then(function(snapshot) {
  console.log('Uploaded a blob or file!');
  });
}
    • 更新**

文件上传到firebase存储,但它一直抱怨承诺(. then)
下面是我正在处理的GitHub文件

atmip9wb

atmip9wb1#

你可以试试这个

async function _UpdateImage(image) {
const response = await fetch(image);
const blob = await response.blob()
const user = firebase.auth().currentUser;
if (user) {
    const storageRef = firebase.storage().ref();
    const thisRef = storageRef.child("ProfilePhoto/" + user.uid);
    thisRef.put(blob).then(function (snapshot) {
        console.log('Uploaded a blob or file!',snapshot);
    });

}

t9aqgxwy

t9aqgxwy2#

您的脚本在我的环境中运行良好。请尝试

console.log(thisRef.put(file));

并检查thisRef.put(file)是否为Promise。

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Firebase Test</title>
    <script src="https://www.gstatic.com/firebasejs/3.8.0/firebase.js"></script>
    <script>
        // Initialize Firebase
        var config = {
            // your configs
        };
        firebase.initializeApp(config);
    </script>
</head>
<body>
    <input type="file" id="file" name="datafile">
    <script>
        function fileChange(ev) {
            var target = ev.target;
            var file = target.files[0];
            var storageRef = firebase.storage().ref();
            var thisRef = storageRef.child("public/" + file.name);
            thisRef.put(file).then(function (snapshot) {
                console.log('Uploaded a blob or file!');
            });
        }
        var inputFile = document.getElementById('file');
        inputFile.addEventListener('change', fileChange, false);
    </script>
</body>
</html>
nom7f22z

nom7f22z3#

我把它修好了

thisRef.put(file).then(function (snapshot) {
            console.log('Uploaded a blob or file!');
        });

const uploadFileToDb = async (e:any,file:File) => {
    e.preventDefault()
    const storageRef = db.storage().ref();
    const fileRef = storageRef.child("files/"+file.name)
    fileRef.put(await file.arrayBuffer()).then(snapshot=> {
        console.log('Uploaded a blob or file!');
    })
   
        
        
}

put()方法需要一个ArrayBuffer,所以我将文件更改为file.arrayBuffer()

相关问题