URL Firebase Image Resizer работает только после двойной отправки одного изображения или создания токена - PullRequest
1 голос
/ 06 марта 2020

На моем веб-сайте в данный момент есть пользователь, который загружает фотографию профиля. Это изображение профиля загружается в хранилище, и затем я запускаю .getDownloadURL(), чтобы загрузить URL-адрес и ссылку на него с моего веб-сайта.

Все работает хорошо.

С тех пор я решил использовать Image Resizer, чтобы изменить размер моего изображения до 100x100, чтобы использовать его в качестве эскиза (сохраняя оригинал для использования в другом месте).

Проблема в том, что я получаю сообщение об ошибке uncaught exception: [object Object] по запросу downloadURL для измененного изображения.

Однако, здесь странная вещь. Если я повторно загрузить то же изображение, оно работает, и все идет хорошо.

У меня есть подозрение, что это происходит из-за того, что токен доступа не создается автоматически в первый раз, но это происходит во второй раз. Я не уверен, как сделать так, чтобы он создавался в первый раз (учитывая, что исходное изображение уже выполнено, но изменение размера - нет)

fileUpload (event) {
  console.log('user id 1 - ' + this.$store.getters.userInfo.user_id)
  // get
  var file = event.target.files[0]
  // ref
  var storageRef = firebase.storage().ref('User_Avatars/' + this.$store.getters.userInfo.user_id + '/' + file.name)
  this.fileRef = this.$store.getters.userInfo.user_id + '/' + file.name
  // upload
  var task = storageRef.put(file)
  // update prog
  task.on(
    'state_changed',
    snapshot => {
      this.fileValue =
        (snapshot.bytesTransferred / snapshot.totalBytes) * 100
    }, error => {
      // eslint-disable-next-line no-console
      console.log(error.message)
    }, () => {
      firebase.storage()
        .ref('User_Avatars/' + this.$store.getters.userInfo.user_id + '/' + file.name).getDownloadURL()
        .then((url) => {
          this.userAvatar = url
          // eslint-disable-next-line no-console
          console.log('Getting full Image ' + this.userAvatar)
        })
        .then(() => {
          this.createThumbnail(file)
          console.log('1')
        })
    })
},

createThumbnail (file) {
  const filename = file.name
  const thumbnailDimensions = '_100x100'
  const fileEx = filename.split('.').pop()
  const fileThumb = filename.replace('.' + fileEx, thumbnailDimensions + '.' + fileEx)

  this.thumbFileRef = fileThumb
  const ref = this.thumbFileRef
  console.log('grabbing ref -' + ref)
  firebase.storage()
    .ref('User_Avatars/' + this.$store.getters.userInfo.user_id + '/' + ref).getDownloadURL()
    .then((url) => {
      this.avatarThumbURL = url
      // eslint-disable-next-line no-console
      console.log('Getting Image thumbnail ' + this.avatarThumbURL)
    })
},
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...