「オブジェクトのアップロード」の下にリストされている手順を実行しようとしています: http://docs.aws.amazon.com/mobile/sdkforios/developerguide/s3transfermanager.html
ただし、アプリケーション全体が Swift で記述されているため、物事を Swift に変換しています。次のコードを思いつきましたが、実行すると、指定したバケットに何もアップロードされません。残念ながら、エラーも発生しないため、トラブルシューティングが困難です。以下に示すように、コンソールにエラーを出力しようとしていますが、myBFTask.error が null になってしまいます。同時に myBFTask.result も null です。文脈上、このコードはすべて imagePickerController didFinishPickingMediaWithInfo 内にあります。次にどこを見るべきかについてのヒントは大歓迎です。
var pickedURL:NSURL = info[UIImagePickerControllerMediaURL] as NSURL
println("here's the url for the picked media: \(pickedURL)")
//make a timestamp variable to use in the key of the video I'm about to upload
let date:NSDate = NSDate()
var unixTimeStamp:NSTimeInterval = date.timeIntervalSince1970
var unixTimeStampString:String = String(format:"%f", unixTimeStamp)
println("this is my unix timestamp as a string: \(unixTimeStampString)")
var myTransferManagerRequest:AWSS3TransferManagerUploadRequest = AWSS3TransferManagerUploadRequest()
myTransferManagerRequest.bucket = "kikfli1.videolist"
myTransferManagerRequest.key = "\(self.fbid)_\(unixTimeStampString)"
myTransferManagerRequest.body = pickedURL
var myBFTask:BFTask = BFTask()
var myMainThreadBFExecutor:BFExecutor = BFExecutor.mainThreadExecutor()
var myTransferManager:AWSS3TransferManager = AWSS3TransferManager()
myTransferManager.upload(myTransferManagerRequest).continueWithExecutor(myMainThreadBFExecutor, withBlock: { (myBFTask) -> AnyObject! in
println("I'm inside the completion block")
if((myBFTask.result) != nil){
println("upload was successful?")
}else{
println("upload didn't seem to go through..")
var myError = myBFTask.error
println("error: \(myError)")
}
return nil
})
これが私のコンソールに出力されるものです:
ユーザーが投稿用の動画を選択しました!
選択したメディアの URL は次のとおりです: file:xxxxxxxxxxxxxxx.MOV (明らかに実際のファイル パス)
これは文字列としての私の UNIX タイムスタンプです: 1417506382.414219
私は完了ブロックの中にいます
アップロードがうまくいかなかったようです..
エラーなし