我试图获取名为a.jpg
的映像的下载链接,该映像位于Firebase存储中名为images
的文件夹中,我正在尝试这样做:
let store = FIRStorage.storage()
let storeRef = store.reference()
let reference = storeRef.child("images").child("a.jpg")
reference.downloadURL { url, error in
if let error = error {
print(error)
}
else {
print(url!)
}
}
在调试url
中,这样做:
表达式产生的错误:错误:执行被中断,原因:EXC_BAD_ACCESS(代码= 1,地址= 0x20)。 该过程已返回到表达式求值之前的状态。
答案 0 :(得分:0)
创建参考
要首先下载文件,请为要下载的文件创建Cloud Storage引用。
您可以通过将子路径附加到存储根目录来创建引用,也可以从现有gs://或https:// URL引用云存储中的对象来创建引用。
// Create a reference with an initial file path and name
let pathReference = storage.reference(withPath: "images/stars.jpg")
// Create a reference from a Google Cloud Storage URI
let gsReference = storage.reference(forURL: "gs://<your-firebase-storage-bucket>/images/stars.jpg")
// Create a reference from an HTTPS URL
// Note that in the URL, characters are URL escaped!
let httpsReference = storage.reference(forURL: "https://firebasestorage.googleapis.com/b/bucket/o/images%20stars.jpg")
下载文件
获得参考后,您可以通过三种方式从Cloud Storage下载文件:
下载到内存中
使用dataWithMaxSize:completion:方法将文件下载到内存中的NSData对象。这是快速下载文件的最简单方法,但是它必须将文件的全部内容加载到内存中。如果您请求的文件大于应用程序的可用内存,则应用程序将崩溃。为了防止出现内存问题,请确保将最大大小设置为您的应用可以处理的大小,或使用其他下载方法。
// Create a reference to the file you want to download
let islandRef = storageRef.child("images/island.jpg")
// Download in memory with a maximum allowed size of 1MB (1 * 1024 * 1024 bytes)
islandRef.getData(maxSize: 1 * 1024 * 1024) { data, error in
if let error = error {
// Uh-oh, an error occurred!
} else {
// Data for "images/island.jpg" is returned
let image = UIImage(data: data!)
}
}
请点击以下链接了解更多详情