0

私はこのすばらしいチュートリアルに従って いて、ほとんどのデータベース転送で動作するようにコードを取得しました。同じ方法を使用して、サーバーのMySQLデータベースに長いテキストメッセージと画像を更新したいのですが、機能していないようです。

NSString *strURL = [NSString stringWithFormat:@"http://mydomain.com/sync.php?name=%@&message=%@&image=%@",nameField.text, messageField.text, image];

その後

NSData *dataURL = [NSData dataWithContentsOfURL:[NSURL URLWithString:strURL]];

NSString *strResult = [[[NSString alloc] initWithData:dataURL encoding:NSUTF8StringEncoding] autorelease];
NSLog(@"StrResult is... %@", strResult);

問題1:messageField.textが「これは最大1000文字のフリーテキスト形式です...」のように間に空白がある長いテキストの場合、strURLにも空白が含まれるため、strResultが発生します。 nullになります。

問題2: 画像がローカルsqliteにすでに保存されているblob形式です。この方法で転送するのが良い考えかどうかさえわかりません。しかし、基本的には、iPhone/iPadからサーバーのMySQLデータベースに直接画像をアップロードしたいと思います。

誰かがこれらの2つの問題のいずれかで私を助けてくれることを願っています。または、サーバー上のMySQLを更新するためのより優れた簡単な代替手段はありますか?ありがとうございました!

4

2 に答える 2

0

問題1:GETリクエストを介してパラメータを送信する場合、不正な文字を避けるためにパラメータをエスケープする必要があります。ちなみに、このようなリクエストでは無制限のデータを送信することはできません。大量のデータの場合は、POSTリクエストを使用する必要があります。

問題2:ASIHTTPRequestは、リモートサーバーとの通信に使用されるラッパーです。これを使用することを選択した場合(使用することをお勧めします)、リクエストをPOSTするために必要なドキュメントは次のとおりです。NSDataを使用してリモートサーバーにイメージを送信する例もあります。

于 2012-08-06T10:15:34.627 に答える
0

問題1:これを行うには多くの方法があります...そのうちの1つは、データベースに配置するときにこれを行うことです。

messageField.text = [messageField.text stringByReplacingOccurrencesOfString:@" " withString:@"_"];

テキストを作成:「これは最大1000文字のフリーテキスト形式です...」から「This_is_a_free_text_format_with_up_to_1000_characters...」

そして、それをデータベースから取り出すときは、反対のコードを再度使用します。

messageField.text = [messageField.text stringByReplacingOccurrencesOfString:@"_" withString:@" "];

これにより、「This_is_a_free_text_format_with_up_to_1000_characters...」から「これは最大1000文字のフリーテキスト形式です...」になります。

ただし、これを行う1つの方法であることを忘れないでください...「_」を「I」などのその他の名前に置き換えることもできます。ユーザーが入力しないもの...

問題2:データベースと画像についてはよくわかりませんが、これを見てください:Blob

:)

于 2012-08-10T19:38:34.953 に答える