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是一个长文本时,中间有空格,例如"This is a free text format with up to 1000 characters...",它会导致 strURL 也有空格,因此 strResult将变为空。

问题2: 图像是我已经保存在本地sqlite中的blob格式。我什至不确定以这种方式转移是否是个好主意。但基本上我想将图像从 iPhone/iPad 直接上传到服务器 MySQL 数据库。

希望有人可以帮助我解决这两个问题中的任何一个。或者有没有更好更简单的替代方法来更新我的服务器上的 MySQL?谢谢!

4

2 回答 2

0

问题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 个字符的自由文本格式...”

但请记住,这是一种方法......您也可以将“_”替换为“ I ”之类的其他内容或您想要的任何内容......用户不会输入的内容......

问题 2:我对数据库和图像不太了解。但是请注意:Blob

:)

于 2012-08-10T19:38:34.953 回答
0

问题1:当你通过GET请求发送参数时,你需要转义你的参数以避免非法字符。顺便说一句,你不能用这种请求发送无限的数据。对于大量数据,您应该使用 POST 请求。

问题 2:ASIHTTPRequest是用于与远程服务器通信的包装器。如果您选择使用它(我鼓励您这样做),这里是您需要发布请求的文档。还有一个使用 NSData 将图像发送到远程服务器的示例。

于 2012-08-06T10:15:34.627 回答