图片未从 Firebase 存储中下载

Images not downloading from Firebase Storage

我正在尝试将图像从新的 Firebase 存储下载到本地文件。为此,我使用了 Firebase 提供的示例 here。这是我的代码:

func getTumbnails(imageName: String) {
    // Create a reference to the file you want to download
    let tumbnailRef = storageRef.child("tumbs/\(imageName)")
    // Create local filesystem URL
    let localURL: NSURL! = NSURL(string: "file:///local/tumbnails/\(imageName)")

    // Download to the local filesystem
    let downloadTask = tumbnailRef.writeToFile(localURL) { (URL, error) -> Void in
        if (error != nil) {
            print(error)
        } else {
            let data = NSData(contentsOfURL: URL!)
            self.data = data!
            print(data)
        }
    }
}

但是当我调用函数 getTumbnails("image") 时,我在控制台上打印了以下错误:

可选(错误域=FIRStorageErrorDomain Code=-13000 "An unknown error occurred, please check the server response." UserInfo={object=tumbs/Sunset.png, bucket=*********.appspot.com, NSLocalizedDescription=发生未知错误,请检查服务器响应。, ResponseErrorDomain=NSCocoaErrorDomain, NSFilePath=/local/tumbnails, NSUnderlyingError=0x137f629c0 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}, ResponseErrorCode =513})

我在 Whosebug 上发现了 问题,但这是一个不同的错误(响应代码 518 而我有 513),并且由于我直接使用示例代码,所以这应该可以正常工作。

有人可以帮我吗?

您似乎没有正确声明 storageRef(即您的存储桶名为 bucket=yourbucket.appspot.com),或者您可能将 Firebase/Storage 添加到 workspace 但确实不更新Google-info.plist。或许您可以展示更多您的代码?

更新: 你可以试试

let localURL: NSURL! = NSURL.fileURLWithPath(string: "file:///local/tumbnails/\(imageName)")

可能是 iOS9 的 App Transport Security,将此代码添加到您的 info.plist 并再次检查

   <key>NSAppTransportSecurity</key>
    <dict>
      <!--Include to allow all connections (DANGER)-->
      <key>NSAllowsArbitraryLoads</key>
          <true/>
    </dict>

这里的问题是您收到 NSPOSIXErrorDomain 错误,表明您没有写入文件 file:///local/tumbnails/\(imageName) 的权限,大概是因为该目录(/local ) 不存在,即使它存在,您也无权写入它。

我会查看 the docs 以获取您可以写入的目录列表——您可能应该为此使用 /Documents/tmp