当前位置: 首页 > 知识库问答 >
问题:

无法在Firebase存储上上载图像

夏经武
2023-03-14

我试图在Firebase存储中使用Firebase上传图像,但文件不能完全上传。它只显示图像的大小9字节,下载时无法预览。

这是我使用的代码:-

const [image, setImage] = useState(null)
    const [uploading, setUploading] = useState(false);
    const [transferred, setTransferred] = useState(0);

  const uploadImage = async () => {
    if( image == null ) {
      return null;
    }
    
    const uploadUri = image;
    let filename = uploadUri.substring(uploadUri.lastIndexOf('/') + 1);
    console.log(filename)
    // Add timestamp to File Name
    const extension = filename.split('.').pop(); 
    const name = filename.split('.').slice(0, -1).join('.');
    filename = name + Date.now() + '.' + extension;
    console.log("filename")
    console.log(filename)

    setTransferred(0);

    const storageRef = firebase.storage().ref(`photos/${filename}`);
    console.log("storageRef")
    const task = storageRef.put(uploadUri);
    console.log("storageRef")
    console.log(storageRef)
    // Set transferred state
    task.on('state_changed', (taskSnapshot) => {
      console.log(
        `${taskSnapshot.bytesTransferred} transferred out of ${taskSnapshot.totalBytes}`,
      );

      setTransferred(
        Math.round(taskSnapshot.bytesTransferred / taskSnapshot.totalBytes) *
          100,
      );
      console.log(transferred)
    });

    try {
      await task;

      const url = await storageRef.getDownloadURL();

      setUploading(false);
      setImage(null);

      alert(
        'Image uploaded!',
        'Your image has been uploaded to the Firebase Cloud Storage Successfully!',
      );
      return url;

    } catch (e) {
      console.log(e);
      return null;
    }

  };


  const takephotofrommlib = () => {
    ImagePicker.openPicker({
      width: 300,
      height: 300,
      cropping: true,
    }).then((image) => {
      console.log(image);
      const imageUri = Platform.OS === 'ios' ? image.path : image.path;
      setImage(image.path);
      console.log("image.path")
      console.log(image.path)

    });
  };

我使用的反应本地图像作物选择器。我使用Firebase,但不是反应本机Firebase。请帮助!

共有1个答案

裴嘉良
2023-03-14

我只是制作了一个文件上传文件。js这里有一个代码

import storage from "@react-native-firebase/storage";

export default async function uploadFile(ref,fileName,file) {   
  if(!file) return
      const tarea=file
  if (tarea&& tarea.indexOf("http://") == 0 || tarea&&tarea.indexOf("https://") == 0) 
{
    // do something here
    return tarea
  }
  const reference = storage().ref(`${ref}/${fileName}`);
   await reference.putFile(file).catch(err=>{console.log("error upload",err);
   })
  return await storage()
  .ref(`${ref}/${fileName}`)
  .getDownloadURL().catch(err=>{console.log("download eror",err);
  });
}

您可以这样使用img=wait uploadFile('photos',“fileName”,filePath)

img中,您可以获得下载url

 类似资料:
  • 我想上传图片到存储区。每次我启动我的模拟器时,我都没有错误,而且一切都运行得很好,只是当我在模拟器中选择图片并上传它们时,即使在我刷新之后,它也不会显示在Firebase存储区中。下面是我的代码:

  • 我想在firebase存储中上载图像。我知道如何使用Uri在firebase中上传图像。但是有没有一种方法可以让我使用链接将图像上传到firebase? 我在我的项目中使用了一个API,我每月只能点击1000次,所以我试图在firebase中保存从API获取的图像。API提供了一个指向图像的链接,我使用它在Picasso的imageview中显示图像。 假设我的链接是http://xxx.xx.x

  • 我创建了一个使用Firebase存储运行的应用。这个想法是,您从照片库中选择一张图片,然后将其上传到Firebase存储。与Firebase的连接似乎工作正常,我可以选择图像。当我按下提交按钮将其上传到Firebase时,问题就出现了。 当我点击它一次,什么也没发生。 当我点击它几次时,我得到一条消息“发生未知错误,请检查HTTP结果代码和内部异常”。。 我该怎么做,寻求建议。。 从舱单中: 从活

  • ,而当我上传相同的文件从上传文件选项从firebase UI然后它是预览罚款。Pls帮助我解决这个问题。

  • 我正在上传。mp3文件通过Firebase存储,但我遇到了权限/规则问题。每次上传时,我都会收到控制台警告 “FIREBASE警告:更新/失败:权限被拒绝” 和 "firebase.js:478未捕获(promise中)错误:PERMISSION_DENIED:拒绝许可" 尽管有这些错误,我还是在Firebase存储中找到了该文件。然而,这些错误使我的代码无法顺利运行。我发现更改Firebase数

  • 有人能指导我同时上传多个图像到Firebase吗? 我试图做的是上传几个图像到Firebase存储,并将每个引用保存在Firestore中(例如,在一个数组中)。我已经设法做到了,但只有一个形象。我正在使用Angularfire存储。 下面是一个stackblitz,如果您想详细了解它:https://stackblitz.com/edit/upload-multiple-firebase com