swiftでサーバーにテキストと画像ファイルをPOSTする

前回 "[swiftでサーバーにテキストをPOSTする](http://qiita.com/simanezumi1989/items/f1102c249b31931df651)" でテキスト投稿についてメモしました。今回は画像ファイルの投稿についてメモします。
画像投稿は難しいということなので net というライブラリを使うことにしました。
そのためテキストを送信するコードも大きく変わっています。
Netについては "[最高なHttpRequest in Swift]("http://qiita.com/nghialv/items/ae671b20b78304802623")" をみてください。

##ライブラリ
[Netのライブラリ：GitHub]("https://github.com/nghialv/Net") をForkしてDesktopにダウンロードしたNetをxcodeのファイルにコピーしました。


##コード

```ViewController.swift

import UIKit

class ViewController: UIViewController, UITextFieldDelegate, NSURLSessionTaskDelegate{
    var json:NSData!
    
    let net = Net(baseUrlString: "送信先のURL")
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        //背景色をorangeにする
        self.view.backgroundColor = UIColor.orangeColor()
        
        // UITextFieldを作成する.
        let myTextField: UITextField = UITextField(frame: CGRectMake(0,0,200,30))
        
        // はじめに表示する文字を代入する.
        myTextField.text = ""
        
        // Delegateを設定する.
        myTextField.delegate = self
        
        // 枠を表示する.
        myTextField.borderStyle = UITextBorderStyle.RoundedRect
        
        // UITextFieldの表示する位置を設定する.
        myTextField.layer.position = CGPoint(x:self.view.bounds.width/2,y:100);
        
        // Viewに追加する.
        self.view.addSubview(myTextField)
        
        
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
    
    /*
    UITextFieldが編集終了する直前に呼ばれる.
    */
    func textFieldShouldEndEditing(textField: UITextField) -> Bool {
        
        //送信する文字をtextFieldから取得する
        let str = "\(textField.text)"
        
        //textFieldを空白になおす
        textField.text = ""
        
        //送信する画像を設定する
        let img = UIImage(named: "logo.png")!
        
        //送信先のpostを設定する
        let url = "/post"
        
        //送信するパラメータを設定する.rubyであればparams[:text]がstrになる
        let params = ["text": str, "file": NetData(pngImage: img, filename: "logo")]
        
        //送信する
        net.POST(url, params: params, successHandler: {
            responseData in
            //let result = responseData.json(error: nil)
            NSLog("Success")
            }, failureHandler: { error in
                NSLog("Error")
        })
        
        return true
    }
    
    /*
    改行ボタンが押された際に呼ばれる.
    */
    func textFieldShouldReturn(textField: UITextField) -> Bool {
        textField.resignFirstResponder()
        
        return true
    }
    
}

```

注意：送信先が http://example.com/post なら 

```
let net = Net(baseUrlString: "http://example.com")

let url = "/post"
```

とします。

##問題と次の目標
送信後に "Error" がでますが問題なく送信できています。おそらくサーバーサイドからのresponseDataがないからでしょう。次はカメラで撮った画像を送信できるようにします。



##参考
Netのライブラリ：GitHub
[https://github.com/nghialv/Net]("https://github.com/nghialv/Net")

Netで画像投稿などの補足情報
[http://da1hara.hatenablog.com/entry/2014/11/12/042718]("http://da1hara.hatenablog.com/entry/2014/11/12/042718")

テキストフィールドの生成
[https://sites.google.com/a/gclue.jp/swift-docs/ni-yinki100-ios/uikit/004-uitextviewde-wen-ziwo-ru-li](https://sites.google.com/a/gclue.jp/swift-docs/ni-yinki100-ios/uikit/004-uitextviewde-wen-ziwo-ru-li)

私が作った数学サイト（アプリで投稿したいサイト）
[https://question-board.herokuapp.com](https://question-board.herokuapp.com)