图片未从 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
。
我正在尝试将图像从新的 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 上发现了
有人可以帮我吗?
您似乎没有正确声明 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
。