Не удается получить URL загрузки из хранилища Firebase - PullRequest
0 голосов
/ 04 июля 2019

Я пытаюсь получить URL для загрузки, чтобы я мог передать его в обещании в функции, которую я вызываю.

В хранилище загружен образ, но каким-то образом я получаю сообщение об ошибке в строке, гдеi console.log - ошибка 404, как будто ее не существует (но она существует)

uploadFile = (file, metadata) => {
    const pathToUpload = this.state.channel.id; 
    const ref = this.props.messagesRef; 
    const filePath = `chat/public/${uuidv4()}.jpg`; // uuid is a function that creates random string

    this.setState({
      uploadState: 'uploading',
      uploadTask: this.state.storageRef.child(filePath).put(file,metadata)
    },
() => {
       this.state.uploadTask.on('state_changed', snap => {
         const percentUploaded = Math.round((snap.bytesTransferred / snap.totalBytes) * 100)
         this.setState({percentUploaded})
       },
       err => {
         console.error(err)
         this.setState({
           errors: this.state.errors.concat(err),
           uploadState: 'error',
           uploadTask: null
         })
       })  
    },
    () => {
      this.state.uploadTask.snapshot.ref.getDownloadURL().then(downloadUrl => {
        console.log(downloadUrl) // get error
        this.sendFileMessage(downloadUrl, ref, pathToUpload)
      })
      .catch(err => {
        console.error(err)
        this.setState({
          errors: this.state.errors.concat(err),
          uploadState: 'error',
          uploadTask: null
        })
      })
    }
    )
  };

Если вам нужно больше кода, дайте мне знать, но в этой точке, где я регистрирую ошибку, именно в этом проблема.

Просто URL размещенного изображения в БД не может быть получен, я пробовал с правилами хранения, но там все выглядит хорошо.

РЕДАКТИРОВАТЬ: С состоянием слушателя state_changed не меняется - все время егоостается на «загрузке», пока изображение хранится в хранилище

1 Ответ

0 голосов
/ 04 июля 2019

Похоже, вы не дожидаетесь завершения загрузки, прежде чем запросить URL загрузки.Обычно это то, что означает 404 с таким кодом.Вам нужно будет использовать обещание, возвращенное storageRef.child(filePath).put(file,metadata), чтобы знать, когда загрузка завершена, и только тогда вы сможете успешно позвонить getDownloadURL() по его ссылке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...