iPhone: просмотр изображения из базы данных MySql на сервере - PullRequest
1 голос
/ 13 октября 2010

Я новичок в программировании на iPhone.У меня есть задача, чтобы загрузить изображение с iphone на сервер и сохранить его в базе данных Mysql на сервере.После этого я извлекаю изображение из базы данных и отображаю его на iPhone.

  • При загрузке: я использовал ASIFormDataRequest для отправки данных изображения на сервер, а PHP-скрипт (uploadpicture.php) будет хранить изображениеданные в базу данных с типом данных blob.

  • При загрузке: я использовал NSURLRequest с NSURLConnection и PHP-скрипт (downloadpicture.php), чтобы извлечь изображение из базы данных и отправить его обратно на iphone.

Это скрипт PHP:

$con = mysql_connect("localhost:8889", "root", "root");
if (!$con) {
 echo "can not connect database";
 die("Could not connect: " .mysql_error());
}

echo "Connect database succesfully";

mysql_select_db("myDatabase", $con);

$result = mysql_query("select * from pictures" ,$con);

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
 echo "{$row['id']}";
 echo "{$row['title']}";
 echo "{$row['description']}";
 echo "{$row['image']}";
 echo "{$row['rate']}";
 echo "{$row['numberofrate']}";
 echo "{$row['numberofdownload']}";
 echo "{$row['numberofcomment']}";
 echo "<br/>";
}


mysql_close($con);
echo "completed";

А это код Obj-C:

- (void) connectionDidFinishLoading:(NSURLConnection *)connection {
 self.connection = nil;
 NSString * dataStr = [[NSString alloc] initWithData:self.receivedData encoding:NSUTF8StringEncoding];
 NSArray * lines = [dataStr componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];

 NSMutableArray * res = [NSMutableArray arrayWithCapacity:[lines count]];
 NSString * line = nil;
 Picture * pic = nil;

 for (NSUInteger i = 0; i < [lines count]; i++) {
  line = (NSString*) [lines objectAtIndex:i];
  NSArray * arr = [line componentsSeparatedByString:@","];

  pic = [[Picture alloc] init];
  pic.pictureId = [[NSDecimalNumber decimalNumberWithString:(NSString *) [arr objectAtIndex:0]] intValue];
  pic.title = (NSString*) [arr objectAtIndex:1];
  pic.description = (NSString*) [arr objectAtIndex:2];
  pic.imageData = (NSData*) [arr objectAtIndex:3];
  pic.rate = [[NSDecimalNumber decimalNumberWithString:(NSString*) [arr objectAtIndex:4]] floatValue];
  pic.numberOfRate = [[NSDecimalNumber decimalNumberWithString:(NSString*) [arr objectAtIndex:5]] intValue];
  pic.numberOfDownload = [[NSDecimalNumber decimalNumberWithString:(NSString*) [arr objectAtIndex:6]] intValue];
  pic.numberOfComment = [[NSDecimalNumber decimalNumberWithString:(NSString*) [arr objectAtIndex:7]] intValue];
  [res addObject:pic];
  [pic release];
 }


 self.picturesData = res;


 //display a image
 [self displayAImage];
 [dataStr release];
}

Но dataStr - нольв методе.Любой, кто поможет мне решить эту проблему.Любая помощь будет оценена.

Спасибо.

1 Ответ

0 голосов
/ 13 октября 2010

Я предполагаю, что receivedData является NSMutableData объектом.Вы реализовали метод делегата -connection:didReceiveData: и -connection:didReceiveResponse:?

Если нет, вы можете сделать это, и в -connection:didReceiveData: просто добавьте входящие данные к объекту NSMutableData.

Если вы уже реализовали эти методы, то, возможно, вы захотите проверить, вызывается ли этот метод-делегат и действительно ли есть данные во временном хранилище данных, когда вы завершаете запрос.Если там ничего нет, возможно, что ничего не возвращается методам делегата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...