現在、以下のようなコードでSwiftからPHPへ画像データを送信しています。
swift
1// 通信のリクエスト生成. 2let myCofig: URLSessionConfiguration = URLSessionConfiguration.default 3let url:NSURL = NSURL(string: "http://xxx.xxx.xxx./update_picture.php")! 4var request: URLRequest = URLRequest(url: url as URL) 5request.httpMethod = "POST" 6 7let session:URLSession = URLSession(configuration: myCofig, delegate: self, delegateQueue: OperationQueue.main) 8 9// リサイズ後のUIImageを用意. 10let image:UIImage! = self.CameraView.image?.ResizeÜIImage(width: resizeWidth, height: resizeHeight) 11 12// 画像データを読み出し、Data型に変換する. 13let file: NSData = UIImagePNGRepresentation(image)! as NSData 14 15// アップロード用のタスクを生成. 16let task:URLSessionUploadTask = session.uploadTask(with: request, from: file as Data)
PHP
1$image = file_get_contents("php://input"); 2if (!$image) { 3 print('画像取得に失敗しました。<br>'); 4} 5 6//ファイル名を作成 7$filename = date('YmdHis').'.png'; 8 9// 取得したバイナリデータを画像(png)として保存. 10file_put_contents('/var/www/photos/'.$filename,$image);
これは正常に動作しているのですが、画像データと同時にテキストデータも送信したいと考えており、以下のように記述しました。
swift
1// 通信のリクエスト生成. 2let conference_key = self.ConferenceKeyLabel.text! 3print(conference_key) 4let post = "conference_key=\(conference_key)" 5let postdata = post.data(using:String.Encoding.utf8)! 6 7let myCofig: URLSessionConfiguration = URLSessionConfiguration.default 8let url:NSURL = NSURL(string: "http://xxx.xxx.xxx./update_picture.php")! 9var request: URLRequest = URLRequest(url: url as URL) 10request.httpMethod = "POST" 11 12request.setValue("application/x-www-form-urlencoded",forHTTPHeaderField: "Content-Type") 13let length = postdata.count 14request.setValue("\(length)",forHTTPHeaderField: "Content-Length") 15request.httpBody = postdata 16 17let session:URLSession = URLSession(configuration: myCofig, delegate: self, delegateQueue: OperationQueue.main) 18 19// リサイズ後のUIImageを用意. 20let image:UIImage! = self.CameraView.image?.ResizeÜIImage(width: resizeWidth, height: resizeHeight) 21 22// 画像データを読み出し、Data型に変換する. 23let file: NSData = UIImagePNGRepresentation(image)! as NSData 24 25// アップロード用のタスクを生成. 26let task:URLSessionUploadTask = session.uploadTask(with: request, from: file as Data) 27
PHP
1$image = file_get_contents("php://input"); 2if (!$image) { 3 print('画像取得に失敗しました。<br>'); 4} 5 6//ファイル名を作成 7$filename = date('YmdHis').'.png'; 8 9//会議Keyの取得 10$conference_key = $_POST["conference_key"]; 11 12// 取得したバイナリデータを画像(png)として保存. 13file_put_contents('/var/www/photos/'.$filename,$image);
コンパイルは通って実行もできるのですが、PHP側でconference_keyの値が受け取れません。
Swiftの通信記述に問題があると思うのですが、どのように書けばよろしいのでしょうか?
ご存知の方がおられましたら教えてください。
色々と試しているのですが、上手くいきません。
画像とテキストの同時送信が可能かどうかだけでもご存知の方がおられましたら教えてください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。