ios - 无法在 iOS 13 上将视频上传到 Firebase 存储
问题描述
在 iOS 12 上完美运行。
简单的样板代码:
let storageRef = storage.reference().child("\(profile.studioCode)/\(selected.classId)/\(uploadDate)")
//Upload file and metadata
let uploadTask = storageRef.putFile(from: videoURL, metadata: metadata)
//Listen for state changes and, errors, and completion of the upload
uploadTask.observe(.resume) { (snapshot) in
//upload resumed or started
}
uploadTask.observe(.pause) { (snapshot) in
//upload paused
}
uploadTask.observe(.progress) { (snapshot) in
//upload progress
}
uploadTask.observe(.success) { (snapshot) in
//upload successful
}
uploadTask.observe(.failure) { (snapshot) in
//upload failed
}
给我:
Error Domain=FIRStorageErrorDomain Code=-13000 "An unknown error occurred, please check the server response."
我已将 Cocoapods 和 Firebase 更新到最新版本,尝试允许任意加载,并尝试注销并重新登录应用程序以重置我的身份验证令牌。在 iOS 13 中,它会在上传时立即抛出该错误,但在 iOS 12 中,它上传得非常好。任何帮助或见解将不胜感激。谢谢!
解决方案
我遇到了类似的问题,但这里有一个简单的解决方法:您需要使用“.putData”而不是“.putFile”并在上传时指定 MIME 类型。
let metadata = StorageMetadata()
//specify MIME type
metadata.contentType = "video/quicktime"
//convert video url to data
if let videoData = NSData(contentsOf: videoURL) as Data? {
//use 'putData' instead
let uploadTask = storageRef.putData(videoData, metadata: metadata)
}
推荐阅读
- go - 如何绕过 dgrijalva/jwt-go 中的 cve-2020-26160 漏洞?
- html - 什么引导库需要使用 modal-body?
- wordpress - Woocommerce - 排除没有上传“图库图片”的产品
- rust - 我可以阻止创建或使用类型的引用吗?
- css - 如何使用css制作滑块水平移动的动画并做出反应?
- flutter - TextStyle 不能识别accentColor 并返回错误的颜色
- java - PDFBox 2.0.9 - pdf 到带有 alpha 的图像
- python - 删除属于另一个单词的单词
- dns - 为什么我们可以创建两个具有相同 DNS 名称的区域?
- next.js - NextJs - 使用 fetch() 通过 POST 方法进行 api 调用 - 总是 ERR_ABORTED 400