Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反应本机多个图像_Javascript_Firebase_React Native_Firebase Storage - Fatal编程技术网

Javascript 反应本机多个图像

Javascript 反应本机多个图像,javascript,firebase,react-native,firebase-storage,Javascript,Firebase,React Native,Firebase Storage,你能给我看一下上传多张图片的源代码吗?我已尝试将多个图像上载到firebase。因此,我使用react native image crop picker选择图像,然后使用react native fetch blob在上传到firebase之前转换图像。在选择图像之后,我将循环数组,然后转换为在循环中获取blob。但有时它可以工作,但有时图像url是空的。我希望我能在这里找到答案试试这个: const uploadImages = (photos) => { const uploadI

你能给我看一下上传多张图片的源代码吗?我已尝试将多个图像上载到firebase。因此,我使用react native image crop picker选择图像,然后使用react native fetch blob在上传到firebase之前转换图像。在选择图像之后,我将循环数组,然后转换为在循环中获取blob。但有时它可以工作,但有时图像url是空的。我希望我能在这里找到答案

试试这个:

const uploadImages = (photos) => {
  const uploadImagePromises = _.map(photos, (p, index) => uploadImage({ uri: p, imageName: "image_" + index }))
  const urls = await Promise.all(uploadImagePromises)
  console.log(urls);
}


const uploadImage = ({ uri, imageName }) => {
  const Blob = RNFetchBlob.polyfill.Blob
  const fs = RNFetchBlob.fs
  window.XMLHttpRequest = RNFetchBlob.polyfill.XMLHttpRequest
  window.Blob = Blob
  const mime = 'image/jpg'
  return new Promise((resolve, reject) => {
    const uploadUri = Platform.OS === 'ios' ? uri.replace('file://', '') : uri
    let uploadBlob = null
    const imageRef = firebase.storage().ref('/images/').child(imageName)
    fs.readFile(uploadUri, 'base64')
      .then((data) => {
        return Blob.build(data, { type: `${mime};BASE64` })
      })
      .then((blob) => {
        uploadBlob = blob
        return imageRef.put(blob, { contentType: mime })
      })
      .then(() => {
        uploadBlob.close()
        resolve(imageRef.getDownloadURL())
      })
      .catch(error => {
        console.log("error", error);
        reject()
      })
  })
}
试试这个:

const uploadImages = (photos) => {
  const uploadImagePromises = _.map(photos, (p, index) => uploadImage({ uri: p, imageName: "image_" + index }))
  const urls = await Promise.all(uploadImagePromises)
  console.log(urls);
}


const uploadImage = ({ uri, imageName }) => {
  const Blob = RNFetchBlob.polyfill.Blob
  const fs = RNFetchBlob.fs
  window.XMLHttpRequest = RNFetchBlob.polyfill.XMLHttpRequest
  window.Blob = Blob
  const mime = 'image/jpg'
  return new Promise((resolve, reject) => {
    const uploadUri = Platform.OS === 'ios' ? uri.replace('file://', '') : uri
    let uploadBlob = null
    const imageRef = firebase.storage().ref('/images/').child(imageName)
    fs.readFile(uploadUri, 'base64')
      .then((data) => {
        return Blob.build(data, { type: `${mime};BASE64` })
      })
      .then((blob) => {
        uploadBlob = blob
        return imageRef.put(blob, { contentType: mime })
      })
      .then(() => {
        uploadBlob.close()
        resolve(imageRef.getDownloadURL())
      })
      .catch(error => {
        console.log("error", error);
        reject()
      })
  })
}

您可能应该更新您的问题,以便更清楚地了解您的图像是如何上传的以及您使用的库。我已经更新了我的问题,先生,这足够了吗?实际上,我只需要这里的源代码。@user8784065查看我的答案并更新标题。您输入了一个错误。您可能应该更新您的问题,以便更清楚地了解您的图像是如何上载的以及您使用的库。我已经更新了我的问题,先生,这足够了吗?实际上,我只需要这里的源代码。@user8784065查看我的答案并更新标题。你打错了,我试过了,先生。但是上传一张图片时会用到这个吗?我知道,只要把上传图片称为通过一系列图片路径就可以了。但是当我必须将图片url添加到我的数据库时,我感到困惑,先生。我已经尝试过了,先生。但是上传一张图片时会用到这个吗?我知道,只要把上传图片称为通过一系列图片路径就可以了。但是当我必须将图片url添加到我的数据库时,我感到困惑,先生。