我正在尝试将新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代码= -13000"发生未知错误,请检查服务器响应。" UserInfo = {object = tumbs / Sunset.png,bucket = ** ****** .appspot.com,NSLocalizedDescription =发生未知错误,请检查服务器响应。,ResponseErrorDomain = NSCocoaErrorDomain,NSFilePath = / local / tumbnails,NSUnderlyingError = 0x137f629c0 {Error Domain = NSPOSIXErrorDomain Code = 1&#34 ;操作不被允许"},ResponseErrorCode = 513})
我在stackoverflow上发现了this问题,但这是一个不同的错误(响应代码518,而我有513),并且由于我直接使用示例代码,这应该可以正常工作。
有人可以帮帮我吗?
答案 0 :(得分:4)
此处的问题是,您收到NSPOSIXErrorDomain
错误,表明您无权写入文件file:///local/tumbnails/\(imageName)
,大概是因为该目录({{1} }}}不存在,即使它存在,你也没有权限写入它。
我要查看the docs以获取您可以写入的目录列表 - 您可能应该使用/local
或/Documents
。
答案 1 :(得分:0)
好像你可能没有正确宣布你的storageRef
(即你的名字叫bucket=yourbucket.appspot.com
},或者你可能已经Firebase/Storage
添加了workspace
但未更新Google-info.plist
。也许您可以展示更多代码?
更新: 你可以尝试
let localURL: NSURL! = NSURL.fileURLWithPath(string: "file:///local/tumbnails/\(imageName)")
答案 2 :(得分:0)
也许它是iOS 9的App Transport Security,将此代码添加到info.plist
并再次检查
<key>NSAppTransportSecurity</key>
<dict>
<!--Include to allow all connections (DANGER)-->
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>