首页 > 解决方案 > 无法在 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 中,它上传得非常好。任何帮助或见解将不胜感激。谢谢!

标签: iosswiftfirebasefirebase-storageios13

解决方案


我遇到了类似的问题,但这里有一个简单的解决方法:您需要使用“.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)
}

推荐阅读