質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

3349閲覧

[swift]IOSアプリによるAWS(S3)への画像アップロード

loran194

総合スコア10

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2016/06/23 21:14

編集2016/06/23 22:07

###前提・実現したいこと
AWS(アマゾンウェブサービス)のS3というストレージに画像をアップロードするIOSアプリをswiftで作成しています。
###発生している問題・エラーメッセージ

画像をDocument以下に保存し、リサイズしない場合はアップロードができるが、リサイズや、ダウンロードした画像のみがアップロードできない。 パスには問題がなく、きちんとデータも存在していることは確認してます。

###該当のソースコード

swift

1 2 3import UIKit 4import AWSS3 5import AWSCognito 6import Photos 7class Uploadpic: UIViewController , UIImagePickerControllerDelegate,UINavigationControllerDelegate, UITextFieldDelegate { 8 9 @IBOutlet weak var titletextbox: UITextField! 10 var imageView = UIImageView(frame: CGRectMake(40 ,40 ,200 ,200)) 11 var asset = PHAsset() 12 var imageURL : NSURL! 13 var pickedURL : NSURL! 14 var fetchResult : NSURL! 15 var filePath : String! 16 override func viewDidLoad() 17 { 18 super.viewDidLoad() 19 self.view.addSubview(imageView) 20 self.imageView.backgroundColor = UIColor.yellowColor() 21 titletextbox.delegate = self 22 } 23 24 override func didReceiveMemoryWarning() 25 { 26 super.didReceiveMemoryWarning() 27 // Dispose of an 28 29 } 30 31 @IBAction func pickBtn(sender: AnyObject) { 32 var photoPick = UIImagePickerController() 33 photoPick.delegate = self 34 photoPick.sourceType = .PhotoLibrary 35 self .presentViewController(photoPick, animated: true, completion: nil) 36 print(photoPick) 37 38 //assets-library://asset/asset.JPG?id=106E99A1-4F6A-45A2-B320-B0AD4A8E8473&ext=JPG 39 } 40 @IBAction func uploadTextFile() { 41 42// 43// 44// let documentPath : String = NSSearchPathForDirectoriesInDomains( 45// NSSearchPathDirectory.DocumentDirectory, 46// NSSearchPathDomainMask.UserDomainMask,true )[0] as! String 47// var gazoupath : NSURL! 48// if NSFileManager.defaultManager().fileExistsAtPath(self.filePath){ 49// print("あるよ") 50// print(self.filePath) 51// gazoupath = NSURL(string:filePath) } 52// 53// 54 55 let transferManager = AWSS3TransferManager.defaultS3TransferManager() 56 57 let uploadRequest = AWSS3TransferManagerUploadRequest() 58 uploadRequest.bucket = "cosplaypic" 59 var title_key = self.titletextbox.text 60 title_key = title_key! + ".jeg" //jpgファイルの時用 61 uploadRequest.key = title_key 62 uploadRequest.body = NSURL(string:filePath) 63 uploadRequest.ACL = .PublicRead 64 uploadRequest.contentType = "img/jpg" 65 66 transferManager.upload(uploadRequest).continueWithBlock { (task: AWSTask) -> AnyObject? in 67 if task.error == nil && task.exception == nil { 68 print("success") 69 print("8",self.filePath) 70 71 72 } else { 73 print("8",self.filePath) 74 75 print("fail") 76 77 78 } 79 return nil 80 } 81 82 } 83 func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 84 85 86 87 imageURL = info[UIImagePickerControllerReferenceURL] as? NSURL 88 imageView.image = info[UIImagePickerControllerOriginalImage] as? UIImage 89 self.dismissViewControllerAnimated(true, completion:nil) 90 91 print("1",imageURL) 92 pickedURL = (info[UIImagePickerControllerReferenceURL] as? NSURL)! 93 94 let tmpDir = NSTemporaryDirectory() 95 print("tmpDir: \(tmpDir)") 96 97 98 99 var tookImage: UIImage = info[UIImagePickerControllerOriginalImage] as! UIImage 100 //リサイズにかんする処理(コメントアウト) 101// 102// var imageWrite = tookImage.size.width 103// var imageHeight = tookImage.size.height 104// print(imageWrite, imageHeight) 105// var imageWH = imageWrite * imageHeight 106// while ( imageWH > 300000){ 107// imageWrite = imageWrite/2 108// imageHeight = imageHeight/2 109// imageWH = imageWrite * imageHeight 110// print(imageWrite, imageHeight) 111// } 112// var size = CGSize(width:imageWrite, height:imageHeight) 113// UIGraphicsBeginImageContext(size) 114// tookImage.drawInRect(CGRectMake(0, 0, size.width, size.height)) 115// var ReSizeImage 116// = UIGraphicsGetImageFromCurrentImageContext() 117// UIGraphicsEndImageContext() 118// 119// tookImage = ReSizeImage 120 121 122 // PNG形式の画像フォーマットとしてNSDataに変換 123 var imageData: NSData = UIImagePNGRepresentation(tookImage)! 124 var imagePath = NSHomeDirectory() 125 filePath = "\(imagePath)/\("Documents/imdage.png")" 126 try! imageData.writeToFile(filePath, atomically: true) 127 // try! text.writeToFile(filePath, atomically: true, encoding: NSUTF8StringEncoding) 128 print("8",filePath) 129 } 130 131 132 //テキストボックスのキーボードを隠すファンクション 133 func textFieldShouldReturn(textField: UITextField) -> Bool { 134 textField.resignFirstResponder() 135 return true 136 137 } 138}

###リサイズしない場合

1 assets-library://asset/asset.JPG?id=106E99A1-4F6A-45A2-B320-B0AD4A8E8473&ext=JPG tmpDir: /Users/fukuiitari/Library/Developer/CoreSimulator/Devices/DB881513-FEBD-4F1E-895C-3180B51D60C9/data/Containers/Data/Application/219A49A7-938C-46E1-9945-8D1F1AB15B61/tmp/ 8 /Users/fukuiitari/Library/Developer/CoreSimulator/Devices/DB881513-FEBD-4F1E-895C-3180B51D60C9/data/Containers/Data/Application/219A49A7-938C-46E1-9945-8D1F1AB15B61/Documents/imdage.png 2016-06-24 06:06:13.900 アプリ名[52085:19990015] AWSiOSSDK v2.4.3 [Debug] AWSURLSessionManager.m line:525 | -[AWSURLSessionManager printHTTPHeadersAndBodyForRequest:] | Request headers: { "Content-Type" = "application/x-amz-json-1.1"; Host = "cognito-identity.ap-northeast-1.amazonaws.com"; "User-Agent" = "aws-sdk-iOS/2.4.3 iPhone-OS/9.3 en_US"; "X-Amz-Date" = 20160623T210613Z; "X-Amz-Target" = "AWSCognitoIdentityService.GetCredentialsForIdentity"; } 中略 <CompleteMultipartUploadResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Location>https://s3-ap-northeast-1.amazonaws.com/cosplaypic/test.jeg</Location><Bucket>cosplaypic</Bucket><Key>test.jeg</Key><ETag>&quot;f9cd81382528ddc27cd49c614b1ec9bd-4&quot;</ETag></CompleteMultipartUploadResult> success 8 /Users/fukuiitari/Library/Developer/CoreSimulator/Devices/DB881513-FEBD-4F1E-895C-3180B51D60C9/data/Containers/Data/Application/219A49A7-938C-46E1-9945-8D1F1AB15B61/Documents/imdage.png

リサイズした場合

<UIImagePickerController: 0x7f911e009000> 1 assets-library://asset/asset.JPG?id=106E99A1-4F6A-45A2-B320-B0AD4A8E8473&ext=JPG tmpDir: /Users/fukuiitari/Library/Developer/CoreSimulator/Devices/DB881513-FEBD-4F1E-895C-3180B51D60C9/data/Containers/Data/Application/507C4525-41B6-4F9F-8A2C-3321E6354292/tmp/ 4288.0 2848.0 2144.0 1424.0 1072.0 712.0 536.0 356.0 8 /Users/fukuiitari/Library/Developer/CoreSimulator/Devices/DB881513-FEBD-4F1E-895C-3180B51D60C9/data/Containers/Data/Application/507C4525-41B6-4F9F-8A2C-3321E6354292/Documents/imdage.png 2016-06-24 06:10:46.955 アプリ名[52338:19997803] CFURLResourceIsReachable failed because it was passed an URL which has no scheme 8 /Users/fukuiitari/Library/Developer/CoreSimulator/Devices/DB881513-FEBD-4F1E-895C-3180B51D60C9/data/Containers/Data/Application/507C4525-41B6-4F9F-8A2C-3321E6354292/Documents/imdage.png fail

###きになるエラー
CFURLResourceIsReachable failed because it was passed an URL which has no scheme
というエラーがおそらく解決する手がかりだとは思うのですが、
CFURLというのがみつからない、URLが間違えているという意味だと思うのですが、NSURLはまちがえていないはずなのですが、、

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

まさか自己解決いたしました。
ディレクトリパスの冒頭のfile:///をつけ忘れるという初歩的なミスでした。

投稿2016/06/23 22:21

loran194

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問