Reputation: 399
Hi I try to upload a m4a file to Firebase Storage but always got error " Error Domain=FIRStorageErrorDomain Code=-13000 "An unknown error occurred, please check the server response." ResponseBody=Can not finalize upload. Current size is 38298. Expected final size is 34554.
This is my code :
func uploadSound(localFile: URL) {
let storageRef = FIRStorage.storage().reference()
let imagesRef = storageRef.child("upload")
let fileName = "/" + self.deviceID + ".m4a"
let uploadTask = spaceRef.putFile(localFile, metadata: nil) { metadata, error in
if let error = error {
print(error)
} else {
// Metadata contains file metadata such as size, content-type, and download URL.
let downloadURL = metadata!.downloadURL()
}
}
}
Appreciate for the help..thanks
Upvotes: 1
Views: 2606
Reputation: 11
you have to send metadata too and the file as data, try this. for swift5
let metadata = StorageMetadata()
metadata.contentType = "audio/m4a"
let riversRef = Storage.storage().reference().child("message_voice").child("\(self.getDate()).m4a")
do {
let audioData = try Data(contentsOf: recorder.url)
riversRef.putData(audioData, metadata: metadata){ (data, error) in
if error == nil{
debugPrint("se guardo el audio")
riversRef.downloadURL {url, error in
guard let downloadURL = url else { return }
debugPrint("el url descargado", downloadURL)
}
}
else {
if let error = error?.localizedDescription{
debugPrint("error al cargar imagen", error)
}
else {
debugPrint("error de codigo")
}
}
}
} catch {
debugPrint(error.localizedDescription)
}
Upvotes: 1
Reputation: 7668
You create the following variables, both of which are unused:
let imagesRef = storageRef.child("upload")
let fileName = "/" + self.deviceID + ".m4a"
When you upload you are calling:
// where is `spaceRef`?
spaceRef.putFile(localFile, metadata: nil)
As a suggestion, maybe try:
let newFileRef = imagesRef.child(fileName)
let uploadTask = newFileRef.putFile(localFile, metadata: nil) { metadata, error in
if let error = error {
print(error)
} else {
// Metadata contains file metadata such as size, content-type, and download URL.
let downloadURL = metadata!.downloadURL()
}
}
Upvotes: 0