Свойство «downloadURL» не существует для типа «AngularFireUploadTask» - PullRequest
0 голосов
/ 26 мая 2018

У меня проблема со строкой

this.downloadURL = task.downloadURL ()

с AngularFireUploadTask, даже если я импортировал ее.

    import { Component, OnInit } from '@angular/core';
    import { AuthService } from '../../core/auth.service';
    import { AngularFireStorage, AngularFireStorageReference, AngularFireUploadTask } from 'angularfire2/storage';

    import { PostService } from '../post.service';
    import { Observable } from 'rxjs/Observable';



    @Component({
      selector: 'app-post-dashboard',
      templateUrl: './post-dashboard.component.html',
      styleUrls: ['./post-dashboard.component.css']
    })
    export class PostDashboardComponent implements OnInit {

      title: string;
      image: string = null;
      content: string;

      buttonText: string = "Create Post"

      uploadPercent: Observable<number>
      downloadURL: Observable<string>

      constructor(
        private auth: AuthService,
        private postService: PostService, 
        private storage: AngularFireStorage
      ) { }

      ngOnInit() {
      }

      uploadImage(event) {
        const file = event.target.files[0]
        const path = `posts/${file.name}`
        if (file.type.split('/')[0] !== 'image') {
          return alert('only image files')
        } else {
          const task = this.storage.upload(path, file)

          this.downloadURL = task.downloadURL()

          this.uploadPercent = task.percentageChanges()
          console.log('Image Uploaded!')
          this.downloadURL.subscribe(url => this.image = url)
        }
      }

Сообщение: «Свойство downloadURL не существует для типа« AngularFireUploadTask ».».

Что делать, чтобы не возникла эта проблема.

Ответы [ 3 ]

0 голосов
/ 03 июня 2018
  const task = this.storage.upload(path, file);
  const ref = this.storage.ref(path);
  this.uploadPercent = task.percentageChanges();
  console.log('Image uploaded!');
  task.snapshotChanges().pipe(
    finalize(() => {
      this.downloadURL = ref.getDownloadURL()
      this.downloadURL.subscribe(url => (this.image = url));
    })
  )
  .subscribe();

Фактическое изменение кода, которое вам потребуется от этого видео .

0 голосов
/ 22 января 2019

я получил эту ошибку при использовании angular + firebase для загрузки изображения, метод DownloadURL() больше не зависит от задачи, поэтому я опубликую ниже, как я решил эту ошибку

upload(event) {
const id = Math.random().toString(36).substring(2);
this.ref = this.afStorage.ref(id);
this.task = this.ref.put(event.target.files[0]);

this.task.snapshotChanges().pipe(
  finalize(() => this.downloadURL = this.ref.getDownloadURL() ))
.subscribe();

, еслиВы хотите, чтобы URL источника изображения был чем угодно, вы можете получить его так:

 this.task.snapshotChanges().pipe(
 finalize(() => {
  this.ref.getDownloadURL().subscribe(url => {
    console.log(url); // <-- do what ever you want with the url..
  });
}))
.subscribe();  
0 голосов
/ 26 мая 2018

Метод, который вы хотите вызвать:

getDownloadURL();

Пожалуйста, посмотрите на эту страницу.

https://github.com/angular/angularfire2/blob/master/docs/storage/storage.md

Здесь вы можете увидеть подпись метода

getDownloadURL(): Observable<any>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...