

初投稿です。 よろしくお願いいたします。

サーバに以下の様な PHP ファイルを置き `UIWebView` に読み込ませています。

[code]

    <form action="native://test" method="post" enctype="multipart/form-data" >
    <input type="file" accept="image/jpeg, image/gif, image/png" name="files" name="photo">
    <input type="text" name="name">
    ...
    </form>
    
[/code]

Swiftで、`shouldStartLoadWithRequest` メソッドで

[code]

    var data:NSData? = request.HTTPBody
    
[/code]

とすると `data` は `nil` になります。

[code]

    <input type="file" accept="image/jpeg, image/gif, image/png" name="files" name="photo">
    
[/code]

を消すと `data` は `nil` ではなく正しく取得できます。

やりたいことは Form から送った画像を SQLite にも保存したいのです。 別の方法でも結構です、どうかご教授願います。


CC BY-SA 3.0
2014-12-28T03:37:37.397
2718
2014-12-28T10:11:14.517
2014-12-28T04:22:44.130
4978
5848
question
ios swift xcode6
UIWebview 上のフォームからのPOST情報取得 (画像, multipart/form-data)


送信されるデータ量が多い場合は、`HTTPBody`ではなく`HTTPBodyStream`にデータがセットされるようです。

`HTTPBodyStream`から`NSMutableData`に全データを読み込むサンプルコードです。

[code]

    if let stream = request.HTTPBodyStream {
      stream.open()
      var data:NSMutableData = NSMutableData()
      while stream.hasBytesAvailable {
        var buffer = [UInt8](count: 512, repeatedValue: 0)
        let len:Int = stream.read(&buffer, maxLength: buffer.count)
        data.appendBytes(buffer, length: len)
      }
    }
    
[/code]


CC BY-SA 3.0
2014-12-28T07:49:35.160
2731
2014-12-28T10:11:14.517
2014-12-28T10:11:14.517
3639
3639
2718
answer