ホーム

aguuu

iOSからHTTP経由でファイルをサーバーにアップロードする方法

  • 投稿者: tochi
  • 2011/6/21 火曜日 11:10:54
  • iPhone
  • このエントリーをはてなブックマークに追加

iOSからファイル(主に画像)をアップロードする方法がわからずに調べていました。
サンプルはいくつか発見したのですが、複数の画像のポストが出来なかったりして悶々としていました。
「やるしかない!」っと言うことで、オレオレクラスを使って今後も使い回せるようにしてみました。
サンプルコードは以下から。よろしければどうぞ。

github – HTTPFileUploadSample

使い方はこんな感じです。

「HTTPFileUpload.h」「HTTPFileUpload.m」をプロジェクトに追加

まずは、プロジェクトに上記のクラスを追加します。

追加したクラスを読み込む

「import」を使って読み込みます。

1
#import "HTTPFileUpload.h"

POSTする画像をインスタンス化する

POSTしたい画像をインスタンス化します。

1
2
  UIImage *image1 = [UIImage imageNamed:@"Icon.png"];
  UIImage *image2 = [UIImage imageNamed:@"Icon.jpg"];

送信データを作成してポストする

1行目:取り込んだクラスをインスタンス化します。
2行目:デリゲートでポスト結果やエラーを受け取るので処理先を指定します。
3行目:もし、ポスト時に文字列も渡すのなら「setPostString:withPostName:」を使ってデータをセットします。1つめの引数が渡すデータで2つめの引数がサーバー側で受け取る際に使用するポスト名。
4〜5行目:ポストする画像をセットします。文字列の場合と同様に1つめの引数が渡すデータで2つめの引数がサーバー側で受け取る際に使用するポスト名。
6行目:ここでポストするuriを指定してデータをポストします。

1
2
3
4
5
6
7
  HTTPFileUpload *httpFileUpload = [[HTTPFileUpload alloc] init];
  httpFileUpload.delegate = self;
  [httpFileUpload setPostString:@"1234" withPostName:@"password"];
  [httpFileUpload setPostImage:image1 withPostName:@"data1" fileName:@"Icon.png"];
  [httpFileUpload setPostImage:image2 withPostName:@"data2" fileName:@"Icon.jpeg"];
  [httpFileUpload postWithUri:@"http://xxx.localhost/"];
  [httpFileUpload release], httpFileUpload = nil;

ポスト結果またはエラーをデリゲートで受け取る

「httpFileUpload:didFailWithError:」でネットワークエラーの際などのエラー処理を行います。
「httpFileUploadDidFinishLoading:result:」でポスト後の処理を行います。もしポストした結果を受け取る場合には2つ目の引数の「result」にNSStringで返ってくるのでそれらを使用して処理を行います。

1
2
3
4
5
6
7
8
9
- (void)httpFileUpload:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
  NSLog(@"%@", error);
}

- (void)httpFileUploadDidFinishLoading:(NSURLConnection *)connection result:(NSString *)result
{
  NSLog(@"%@", result);
}

あとは今後の課題や問題点など

  • HTTPFileUpLoadとは名ばかりの画像(jpg、png)しか対応していません。必要になったら他ファイルにも対応しようかと。
  • 自分が作ったプロジェクトでは正常に動いていますが。。。まだ使い込んでいないのでバグがあると思います。

そんな不安満載のクラスですが、少しでも参考なればということで公開しています。
もし、バグなどありましたら教えてください。

それにしてもHTTPの構造が少しだけ理解できてとっても勉強になりました。

Android版のLocal searchをリリースした

  • 投稿者: tochi
  • 2011/6/6 月曜日 16:38:22
  • Android
  • このエントリーをはてなブックマークに追加

ということで「Local search」のAndroid版をリリースしました。
初めてのAndroidアプリでしたが、0からのスタートで約2週間で何とかリリースまでこぎつけました。
iPhone版よりも機能が足りませんが。。。
当面の目標は

  • iPhone版と同等の機能を実装する。
  • リファクタリング

Android携帯をお使いの方は、よろしければどうぞ。

今回もプロモビデオを作ってみました。やっぱりJazzierに。w

Local search Ver 1.3をリリースしました。プロモビデオあり。

  • 投稿者: tochi
  • 2011/5/24 火曜日 12:37:57
  • iPhone
  • このエントリーをはてなブックマークに追加

Local searchがまもなくVer 1.3になります。
※現在、iTunesではまだアップグレードが反映されていないみたい。

今回の変更点は下記の通り。

  • 地図表示の際のアニメーション効果を追加
  • イベント開始日、終了日の曜日を表示
  • イベント検索の距離を1〜100mの範囲で自由に変更
  • メモリ警告時のバグ修正
  • 操作時の速度向上

ついでに、プロモーション用の映像を作ってみました。
音楽とかつけてJazzerにしてみました。w

※音が出ます。

ホーム

検索
フィード
メタ情報

ページの上部に戻る