2010-10-13 118 views
1

查看图像我是新手与iPhone编程。我有一个上传图片从iPhone到服务器,它在MySQL数据库存储在服务器的任务。之后,我从数据库中检索图像并将其显示在iPhone上。iPhone:从MySQL数据库服务器上

  • 在上传: 我用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是在方法为零。任何人都可以帮助我解决这个问题。任何帮助,将不胜感激。

谢谢。

回答

0

我假设receivedDataNSMutableData对象。你实现委托方法-connection:didReceiveData:-connection:didReceiveResponse:

如果不是,您可能想要这样做,并在-connection:didReceiveData:只需将传入数据附加到NSMutableData对象。

如果您确实已经实现了这些方法,那么你可能要检查,看看是否委托方法获取调用,实际上有数据在临时数据存储,当你完成的请求。如果没有任何内容,可能没有任何内容返回给委托方法。

相关问题