将MP3文件上传到Firebase存储后变成了视频/MP3文件

8

我试图将一个音频文件保存在新的Firebase存储选项中,该音频文件设置为.mp3格式,并通过以下代码上传到Firebase:UploadTask uploadAudio = storageRef.putFile(audioUri); 问题是该音频被存储为video/mp4文件,因此MediaPlayer无法将其作为音频进行播放。我该如何解决这个问题?


4
在将文件上传到Firebase时,您可以明确指定元数据。如果您指定了setContentType(“audio / mpeg”),它应正确将文件映射到MP3格式。 - Frank van Puffelen
2个回答

10

将评论移至答案:

您可以在上传文件到Firebase时明确地指定元数据。如果您指定setContentType("audio/mpeg"),它应该正确地映射文件为MP3格式。


我会尝试,但为什么视频和PDF文件会以正确的类型发送? - Andrey Solera
我尝试了你的答案,它起作用了!唯一的问题是,当我尝试复制链接时,它显示为损坏。我已经尝试在媒体播放器上播放它,并复制链接以进行双重检查,你知道这可能是为什么吗? - Andrey Solera
@MikeMcDonald 有没有一份正确的语法列表,列出了您可以在fb存储中添加的不同内容类型格式?例如,我该如何添加m4a?只需使用"audio/m4a"吗? - Edward
我只是使用http://www.freeformatter.com/mime-types-list.html作为参考。 - Mike McDonald
@MikeMcDonald 请帮忙解答这个与Firebase存储相关的问题:http://stackoverflow.com/q/44080673/6144372 - Hammad Nasir
显示剩余2条评论

2
 class func uploadAudios(data : Data,completion :  @escaping (_ succus : String )->Void){
    var url = ""
    let storage = Storage.storage()
    // Create file metadata including the content type
    let metadata = StorageMetadata()
    metadata.contentType = "audio/mpeg"
    let uploadRef = storage.reference().child("audios/\(UUID().uuidString).mp3")
    uploadRef.putData(data, metadata: metadata) { metadata,
        error in
        if error == nil {
            print("successfully uploaded Audio")
            url = (metadata?.downloadURL()?.absoluteString)!
            print("AhmedRabie \(url)")
            completion(url)
        }
        else {
            print("UploadError \(String(describing: error))")
        }
        
    }
    
}

答案是使用Swift语言,但步骤仍然相同。 - Rabie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接