3

我可以将图像上传到 Firebase 存储,但无法下载它们。这是我下载图像的代码:

let storage = FIRStorage.storage()
let localURL : NSURL! = NSURL(string: "file:///Documents/co.png")
// i also tried let localURL : NSURL! = NSURL.fileURLWithPath("file:///Documents/co.png")

func download() {
    let storageRef = storage.referenceForURL("gs://project-5547819591027666607.appspot.com")
    let imageRef = storageRef.child("co.png")

    let downloadTask = imageRef.writeToFile(localURL) { (URL, error) -> Void in
        if (error != nil) {
            print(error?.localizedDescription)
        }
        else {
            self.imageView.image = UIImage(data: data!)
        }
    }
}

我正在接收 - 可选(“发生未知错误,请检查服务器响应。”)

另外,一旦我下载了它们,我将如何查看该图像?

为了尝试查看图像是否已下载,我创建了一个 UIImageView 并在情节提要中为其设置了一个名为“imageView”的出口,然后将下载的图像设置为 UIImageView。

self.imageView.image = UIImage(data: data!)
4

1 回答 1

6

尝试

首先获取您要下载的图像的参考

let reference = FIRStorage.storage().reference("uploads/sample.jpg")

如果您知道图像的大小很小,例如 1-2 mb max 。下载内存中的图像

reference.dataWithMaxSize(1 * 1024 * 1024) { (data, error) -> Void in
  if (error != nil) {
    print(error)
  } else {
     let myImage: UIImage! = UIImage(data: data!)    
  }
}

这将是直接从 Firebase 存储下载的最快捷、最简单的方法。

但是,在某些情况下,您需要进度块和某些其他内容,例如缓存。在这种情况下,您可以使用任何第三方(如 Alamofire)从您从 Firebase Storage 获得的 url 下载图像。
要获取网址,请执行以下操作

reference.downloadURLWithCompletion { (URL, error) -> Void in
  if (error != nil) {
    // Handle any errors
  } else {
     print(URL)
     // download image using NSURLSession or Alamofire
  }
}
于 2016-06-08T06:23:44.920 回答