【问题标题】:iPhone: View image from MySql database on serveriPhone:从服务器上的 MySql 数据库中查看图像
【发布时间】:2011-04-24 21:11:00
【问题描述】:

我是 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 为 nil。任何人都可以帮助我解决这个问题。任何帮助将不胜感激。

谢谢。

【问题讨论】:

    标签: php iphone image upload download


    【解决方案1】:

    我假设receivedData 是一个NSMutableData 对象。你实现了委托方法-connection:didReceiveData:-connection:didReceiveResponse:吗?

    如果没有,您可能想要这样做,并在 -connection:didReceiveData: 中简单地将传入数据附加到 NSMutableData 对象。

    如果您确实已经实现了这些方法,那么您可能需要检查该委托方法是否被调用,并且当您完成请求时,临时数据存储中是否确实有数据。如果那里什么都没有,则可能没有任何内容返回给委托方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 2021-10-30
      • 1970-01-01
      • 2018-04-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多