我目前正在尝试使用github中firebase存储的快速启动示例。您只需上传一个图像,然后在加载该视图后将其下载到另一个视图。我可以很好地将图像上传到存储器,但当我尝试下载图像时,会发生此错误。
Error Domain=FIRStorageErrorDomain Code=-13000"发生未知错误,>请检查服务器响应。"用户信息"={bucket=***.appspot.com,>object=379f921d-a0bb-44b5-b04e-f21cc7953848/485423329797/IMG_0003.JPG,ResponseErrorDomain=NSCocoaErrorDomain,NSDestinationFilePath=/file:/Users/mark******/Library/Developer/CoreSim>ulator/Devices/B600E8B9-95ED-4963-8282-9CDD43B7C25D/data/CContainers/data/Application/8FFB7EB0-0AFD-4E10-AAB6-D7340F8E3DDB/Documents/myimage.JPG,NSLocalizedDescription=未知错误occrred,请检查服务器响应。,NSUserStringVariant=(移动),NSSourceFilePathErrorKey=/Users/mark******/Library/Developer/CoreSimura>tor/Devices/B600E8B9-95ED-4963-8282->9CDD43B7C25D/data/Channels/data/Application/8FFB7EB0-0AFD-4E10-AAB6->D7340F8E3DDB/tmp/CFNetworkDownload_5ZmlMp.tmp,NSFilePath=/Users/mark******/Library/Developer/CoreSimulator/Devices/B6>00E8B9-95ED-4963-8282->9CDD43B7C25D/data/Cainers/data/Application/8FFB7EB0-0AFD-4E10-AAB6->D7340F8E3DDB/tmp/CFNetworkDownload_5ZmlMp.tmp,NSUnderlyingError=0x7f8036a682d0{错误域=NSPOSIXErrorDomain Code=2>"没有这样的文件或目录"},ResponseErrorCode=4}
我已经检查了Firebase Storage端的路径,文件路径是正确的,但似乎无法检索图像。
下载图像的代码在下载文件的viewdidload()函数中
override func viewDidLoad() {
super.viewDidLoad()
storageRef = FIRStorage.storage().reference()
let paths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory,
NSSearchPathDomainMask.UserDomainMask, true)
let documentsDirectory = paths[0]
let filePath = "file:(documentsDirectory)/myimage.jpg"
let storagePath = NSUserDefaults.standardUserDefaults().objectForKey("storagePath") as! String
print("---------------")
print(filePath)
print("---------------")
print(storagePath)
// [START downloadimage]
storageRef.child(storagePath).writeToFile(NSURL.fileURLWithPath(filePath),
completion: { (url, error) in
if let error = error {
print("Error downloading:(error)")
self.statusTextView.text = "Download Failed"
return
}
self.statusTextView.text = "Download Succeeded!"
self.imageView.image = UIImage.init(contentsOfFile: filePath)
})
// [END downloadimage]
}}
看起来这里的问题实际上是您的下载文件路径不正确(抛出的错误实际上是NSCocoaErrorDomain
,而不是网络问题——看起来我们的错误消息太特定于网络)。
我看到的主要问题是,您的文件路径看起来像/file:/Users/...
,而我认为文件URL应该看起来像file:///Users/...
我通常会创建类似这样的本地文件:
NSURL *tmpDirURL = [NSURL fileURLWithPath:NSTemporaryDirectory()];
NSURL *fileURL = [[tmpDirURL URLByAppendingPathComponent:@"hello"] URLByAppendingPathExtension:@"txt"];
您也可以使用NSHomeDirectoryForUser
来获取用户的基本目录。