2017-08-12 77 views
2

我試圖讓我選擇的視頻的縮略圖時。斯威夫特應用程序崩潰上傳圖像火力

好像它創建縮略圖,但上傳時,它火力

它崩潰的thumbnailStorageRef我相信它崩潰。

下面是相關代碼:

guard let imagePickerUrl = info[UIImagePickerControllerMediaURL] as? URL else { return } 
let videoUrl = imagePickerUrl 

// Generate image thumbnail. 

let asset: AVAsset = AVAsset(url: videoUrl as URL) 
let imageGenerator = AVAssetImageGenerator(asset: asset) 
imageGenerator.appliesPreferredTrackTransform = true 
var time = asset.duration 
time.value = min(time.value, 3) 

do { 
    let thumbnailImage = try imageGenerator.copyCGImage(at: time , actualTime: nil) 
    let image = UIImage(cgImage: thumbnailImage) 
    let imageData = UIImagePNGRepresentation(image)! 

    let thumbnailStorageRef = FIRStorage.storage().reference() 
    thumbnailStorageRef.child("thumbnails/" + randomString(length: 20) + ".png") 

    thumbnailStorageRef.put(imageData, metadata: nil, completion: { (thumbnailMeta, error) in 
     if error != nil { 
      print("An error has occured while uploading thumbnail:",error ?? "") 
     } else { 
      print("Thumbnail upload to database was successfull", thumbnailMeta?.downloadURL() ?? "") 
     } 
    }) 
} catch { 
    print("An error has occurred while making thumbnail:") 
} 

崩潰時的錯誤控制檯說:

2017年8月11日17:19:08.656考拉[17914:491998] *終止由於應用到 未捕獲的異常 'NSInvalidArgumentException',原因是: '* - [__ NSPlaceholderDictionary initWithObjects:forKeys:數:]:嘗試從物體插入零對象[1]' ***第一擲通話STAC k:

我不知道這個錯誤消息試圖說什麼,也許該圖片試圖上傳是零?我不確定。

+1

野生猜想:你的imageData是零。 – Glenn

+0

我只是如果讓安全解開它說爲imageData不是零 –

+0

@Glenn的圖像數據輸出「233912個字節」 –

回答

4

看起來你忘了使用您剛纔創建的存儲節點。嘗試更換此代碼:

thumbnailStorageRef.child("thumbnails/" + randomString(length: 20) + ".png") 
thumbnailStorageRef.put(imageData, metadata: nil, completion: ... 

與此相反:

let imageRef = thumbnailStorageRef.child("thumbnails/" + randomString(length: 20) + ".png") 
imageRef.put(imageData, metadata: nil, completion: ... 

這種變化應該可以解決您的本期)

+0

這引起了它的工作!非常感謝! –

+0

@ErikBatista尼斯,好知道;)順便說一句,請務必將其標記爲接受的答案,當你得到一個機會,謝謝! –